From 7861fdee4430781c6ee6c22572309139c87ccdf7 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Wed, 15 Feb 2012 16:31:29 -0600 Subject: [PATCH] HHH-7067 - Update build to work with Gradle m8 --- build.gradle | 148 ++++-- buildSrc/build.gradle | 12 +- documentation/documentation.gradle | 23 +- .../docbook/devguide/en-US/Author_Group.xml | 139 +++--- .../devguide/en-US/Batch_Processing.xml | 26 +- .../main/docbook/devguide/en-US/Book_Info.xml | 54 --- .../main/docbook/devguide/en-US/Caching.xml | 28 +- .../devguide/en-US/Data_Categorizations.xml | 22 +- .../devguide/en-US/Database_Access.xml | 32 +- .../main/docbook/devguide/en-US/Envers.xml | 231 +++++----- .../en-US/Hibernate_Development_Guide.xml | 65 ++- .../src/main/docbook/devguide/en-US/JMX.xml | 11 +- .../main/docbook/devguide/en-US/Locking.xml | 10 +- .../devguide/en-US/Mapping_Association.xml | 19 +- .../devguide/en-US/Mapping_Entities.xml | 8 +- .../main/docbook/devguide/en-US/Preface.xml | 18 +- .../legacy_criteria/Legacy_Criteria.xml | 47 +- .../appendix-Configuration_Properties.xml | 13 +- .../en-US/appendix-Troubleshooting.xml | 8 +- .../devguide/en-US/chapters/events/Events.xml | 29 +- .../chapters/multitenancy/Multi_Tenancy.xml | 17 +- .../en-US/chapters/pc/Persistence_Context.xml | 47 +- .../chapters/query_criteria/Criteria.xml | 45 +- .../chapters/query_native/Native_SQL.xml | 35 +- .../en-US/chapters/query_ql/HQL_JPQL.xml | 119 +++-- .../en-US/chapters/services/Services.xml | 64 ++- .../chapters/transactions/Transactions.xml | 42 +- .../main/docbook/manual/en-US/Book_Info.xml | 52 --- ...ational_Persistence_for_Idiomatic_Java.xml | 49 +- .../en-US/content/additionalmodules.xml | 64 +-- .../manual/en-US/content/architecture.xml | 44 +- .../en-US/content/association_mapping.xml | 66 +-- .../manual/en-US/content/basic_mapping.xml | 425 ++++++++---------- .../docbook/manual/en-US/content/batch.xml | 42 +- .../manual/en-US/content/best_practices.xml | 32 +- .../manual/en-US/content/bibliography.xml | 57 +-- .../en-US/content/collection_mapping.xml | 131 +++--- .../en-US/content/component_mapping.xml | 42 +- .../manual/en-US/content/configuration.xml | 100 ++--- .../docbook/manual/en-US/content/events.xml | 38 +- .../manual/en-US/content/example_mappings.xml | 50 +-- .../en-US/content/example_parentchild.xml | 42 +- .../manual/en-US/content/example_weblog.xml | 38 +- .../docbook/manual/en-US/content/filters.xml | 34 +- .../en-US/content/inheritance_mapping.xml | 52 +-- .../manual/en-US/content/performance.xml | 119 ++--- .../en-US/content/persistent_classes.xml | 69 +-- .../manual/en-US/content/portability.xml | 49 +- .../docbook/manual/en-US/content/preface.xml | 54 +-- .../manual/en-US/content/query_criteria.xml | 54 +-- .../manual/en-US/content/query_hql.xml | 68 +-- .../manual/en-US/content/query_sql.xml | 72 +-- .../docbook/manual/en-US/content/readonly.xml | 62 +-- .../manual/en-US/content/session_api.xml | 89 ++-- .../manual/en-US/content/toolset_guide.xml | 52 +-- .../manual/en-US/content/transactions.xml | 66 +-- .../docbook/manual/en-US/content/tutorial.xml | 118 ++--- .../docbook/manual/en-US/content/type.xml | 113 ++--- .../main/docbook/manual/en-US/content/xml.xml | 54 +-- .../docbook/quickstart/en-US/Author_Group.xml | 53 ++- .../docbook/quickstart/en-US/Book_Info.xml | 29 -- .../en-US/Hibernate_Getting_Started_Guide.xml | 30 +- .../quickstart/en-US/content/obtaining.xml | 28 +- .../quickstart/en-US/content/preface.xml | 52 +-- .../en-US/content/tutorial_annotations.xml | 17 +- .../en-US/content/tutorial_envers.xml | 13 +- .../quickstart/en-US/content/tutorial_jpa.xml | 19 +- .../en-US/content/tutorial_native.xml | 25 +- .../main/style/css/css/hibernate-eclipse.css | 3 + .../main/style/css/css/hibernate-single.css | 3 + .../src/main/style/css/css/hibernate.css | 94 ++++ .../images/org/hibernate/bkg_gradient.png | Bin 0 -> 2904 bytes .../images/org/hibernate/community_doc.png | Bin 0 -> 4962 bytes .../org/hibernate/docbook/callouts/1.png | Bin 0 -> 606 bytes .../org/hibernate/docbook/callouts/1.svg | 18 + .../org/hibernate/docbook/callouts/10.png | Bin 0 -> 713 bytes .../org/hibernate/docbook/callouts/10.svg | 23 + .../org/hibernate/docbook/callouts/11.png | Bin 0 -> 668 bytes .../org/hibernate/docbook/callouts/11.svg | 19 + .../org/hibernate/docbook/callouts/12.png | Bin 0 -> 743 bytes .../org/hibernate/docbook/callouts/12.svg | 23 + .../org/hibernate/docbook/callouts/13.png | Bin 0 -> 714 bytes .../org/hibernate/docbook/callouts/13.svg | 25 ++ .../org/hibernate/docbook/callouts/14.png | Bin 0 -> 723 bytes .../org/hibernate/docbook/callouts/14.svg | 20 + .../org/hibernate/docbook/callouts/15.png | Bin 0 -> 762 bytes .../org/hibernate/docbook/callouts/15.svg | 22 + .../org/hibernate/docbook/callouts/2.png | Bin 0 -> 704 bytes .../org/hibernate/docbook/callouts/2.svg | 22 + .../org/hibernate/docbook/callouts/3.png | Bin 0 -> 691 bytes .../org/hibernate/docbook/callouts/3.svg | 24 + .../org/hibernate/docbook/callouts/4.png | Bin 0 -> 671 bytes .../org/hibernate/docbook/callouts/4.svg | 19 + .../org/hibernate/docbook/callouts/5.png | Bin 0 -> 718 bytes .../org/hibernate/docbook/callouts/5.svg | 21 + .../org/hibernate/docbook/callouts/6.png | Bin 0 -> 724 bytes .../org/hibernate/docbook/callouts/6.svg | 23 + .../org/hibernate/docbook/callouts/7.png | Bin 0 -> 670 bytes .../org/hibernate/docbook/callouts/7.svg | 19 + .../org/hibernate/docbook/callouts/8.png | Bin 0 -> 733 bytes .../org/hibernate/docbook/callouts/8.svg | 24 + .../org/hibernate/docbook/callouts/9.png | Bin 0 -> 743 bytes .../org/hibernate/docbook/callouts/9.svg | 23 + .../images/org/hibernate/docbook/caution.png | Bin 0 -> 5956 bytes .../images/org/hibernate/docbook/caution.svg | 142 ++++++ .../images/org/hibernate/docbook/home.png | Bin 0 -> 2887 bytes .../org/hibernate/docbook/important.png | Bin 0 -> 5970 bytes .../org/hibernate/docbook/important.svg | 137 ++++++ .../images/org/hibernate/docbook/next.png | Bin 0 -> 1602 bytes .../images/org/hibernate/docbook/note.png | Bin 0 -> 5679 bytes .../images/org/hibernate/docbook/note.svg | 137 ++++++ .../images/org/hibernate/docbook/prev.png | Bin 0 -> 1511 bytes .../images/org/hibernate/docbook/tip.png | Bin 0 -> 5944 bytes .../images/org/hibernate/docbook/tip.svg | 143 ++++++ .../images/org/hibernate/docbook/up.png | Bin 0 -> 1525 bytes .../images/org/hibernate/docbook/warning.png | Bin 0 -> 5134 bytes .../images/org/hibernate/docbook/warning.svg | 231 ++++++++++ .../style/images/images/org/hibernate/dot.png | Bin 0 -> 173 bytes .../images/images/org/hibernate/dot2.png | Bin 0 -> 128 bytes .../images/org/hibernate/hibernatelogo.png | Bin 0 -> 5161 bytes .../images/images/org/hibernate/title_hdr.png | Bin 0 -> 43886 bytes .../org/hibernate/jdocbook/xslt/common.xsl | 49 ++ .../org/hibernate/jdocbook/xslt/eclipse.xsl | 43 ++ .../xslt/org/hibernate/jdocbook/xslt/fop1.xsl | 100 +++++ .../xslt/org/hibernate/jdocbook/xslt/pdf.xsl | 137 ++++++ .../hibernate/jdocbook/xslt/xhtml-common.xsl | 58 +++ .../hibernate/jdocbook/xslt/xhtml-single.xsl | 39 ++ .../org/hibernate/jdocbook/xslt/xhtml.xsl | 39 ++ hibernate-core/hibernate-core.gradle | 10 +- .../hibernate-entitymanager.gradle | 33 +- hibernate-envers/hibernate-envers.gradle | 9 +- release/release.gradle | 2 +- 132 files changed, 3224 insertions(+), 2485 deletions(-) delete mode 100644 documentation/src/main/docbook/devguide/en-US/Book_Info.xml delete mode 100644 documentation/src/main/docbook/manual/en-US/Book_Info.xml delete mode 100644 documentation/src/main/docbook/quickstart/en-US/Book_Info.xml create mode 100644 documentation/src/main/style/css/css/hibernate-eclipse.css create mode 100644 documentation/src/main/style/css/css/hibernate-single.css create mode 100644 documentation/src/main/style/css/css/hibernate.css create mode 100644 documentation/src/main/style/images/images/org/hibernate/bkg_gradient.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/community_doc.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/1.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/1.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/11.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/11.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/14.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/14.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/2.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/2.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/3.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/3.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/6.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/6.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/caution.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/caution.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/home.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/important.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/important.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/next.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/note.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/note.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/prev.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/tip.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/tip.svg create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/up.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/warning.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/docbook/warning.svg create mode 100755 documentation/src/main/style/images/images/org/hibernate/dot.png create mode 100755 documentation/src/main/style/images/images/org/hibernate/dot2.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/hibernatelogo.png create mode 100644 documentation/src/main/style/images/images/org/hibernate/title_hdr.png create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/common.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/eclipse.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/fop1.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/pdf.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-common.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl create mode 100644 documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl diff --git a/build.gradle b/build.gradle index 9b8f4c7a84..76cafeecca 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ allprojects { repositories { mavenCentral() mavenLocal() - mavenRepo name: 'jboss-nexus', urls: "https://repository.jboss.org/nexus/content/groups/public/" - mavenRepo name: "jboss-snapshots", urls: "http://snapshots.jboss.org/maven2/" + mavenRepo name: 'jboss-nexus', url: "https://repository.jboss.org/nexus/content/groups/public/" + mavenRepo name: "jboss-snapshots", url: "http://snapshots.jboss.org/maven2/" } } @@ -14,34 +14,55 @@ buildscript { repositories { mavenCentral() mavenLocal() - mavenRepo name: 'jboss-nexus', urls: "https://repository.jboss.org/nexus/content/groups/public/" - mavenRepo name: "jboss-snapshots", urls: "http://snapshots.jboss.org/maven2/" + mavenRepo name: 'jboss-nexus', url: "https://repository.jboss.org/nexus/content/groups/public/" + mavenRepo name: "jboss-snapshots", url: "http://snapshots.jboss.org/maven2/" } dependencies { - classpath 'org.hibernate.build.gradle:gradle-upload-auth-plugin:1.0.2' + classpath 'org.hibernate.build.gradle:gradle-upload-auth-plugin:1.1.0' } } -ideaProject { - javaVersion = "1.6" - withXml { provider -> - def node = provider.asNode() - def vcsConfig = node.component.find { it.'@name' == 'VcsDirectoryMappings' } - vcsConfig.mapping[0].'@vcs' = 'Git' - def maxHeapSizeConfig = node.component.find { it.'@name' == 'JavacSettings' } - if( maxHeapSizeConfig == null ){ - def javacSettingsNode = node.appendNode('component',[name: 'JavacSettings']) - javacSettingsNode.appendNode('option', [name:"MAXIMUM_HEAP_SIZE", value:"512"]) - } - } - beforeConfigured { module -> - module.modulePaths.removeAll { it.filePath.endsWith('hibernate-core.iml') } - } -} - -ideaModule { - moduleName = 'hibernate-core-root' +idea { + project { + jdkName = "1.6" + ipr { + withXml { provider -> + provider.node.component.find { it.@name == 'VcsDirectoryMappings' }.mapping.@vcs = 'Git' + def maxHeapSizeConfig = provider.node.component.find { it.@name == 'JavacSettings' } + if( maxHeapSizeConfig == null ){ + def javacSettingsNode = provider.node.appendNode('component',[name: 'JavacSettings']) + javacSettingsNode.appendNode('option', [name:"MAXIMUM_HEAP_SIZE", value:"512"]) + } + } + beforeMerged { project -> + project.modulePaths.clear() + } + } + } + module { + name = "hibernate-orm" + } } +//ideaProject { +// javaVersion = "1.6" +// withXml { provider -> +// def node = provider.asNode() +// def vcsConfig = node.component.find { it.'@name' == 'VcsDirectoryMappings' } +// vcsConfig.mapping[0].'@vcs' = 'Git' +// def maxHeapSizeConfig = node.component.find { it.'@name' == 'JavacSettings' } +// if( maxHeapSizeConfig == null ){ +// def javacSettingsNode = node.appendNode('component',[name: 'JavacSettings']) +// javacSettingsNode.appendNode('option', [name:"MAXIMUM_HEAP_SIZE", value:"512"]) +// } +// } +// beforeConfigured { module -> +// module.modulePaths.removeAll { it.filePath.endsWith('hibernate-core.iml') } +// } +//} +// +//ideaModule { +// moduleName = 'hibernate-core-root' +//} // build a map of the dependency artifacts to use. Allows centralized definition of the version of artifacts to // use. In that respect it serves a role similar to in Maven @@ -227,30 +248,62 @@ subprojects { subProject -> targetCompatibility = "1.6" sourceCompatibility = "1.6" - ideaModule { - beforeConfigured { module -> - module.excludeFolders.clear() - } - scopes.COMPILE.plus.add( configurations.provided ) - whenConfigured { module -> - module.dependencies*.exported = true - } - excludeDirs = [ - file(".gradle"), - file("$buildDir/classes"), - file("$buildDir/dependency-cache"), - file("$buildDir/libs"), - file("$buildDir/reports"), - file("$buildDir/test-results"), - file("$buildDir/tmp"), - file("$buildDir/matrix") - ] as Set - } - - eclipseClasspath { - plusConfigurations.add( configurations.provided ) + idea { + module { + iml { + beforeMerged { module -> + module.dependencies.clear() + module.excludeFolders.clear() + } + whenMerged { module -> + module.dependencies*.exported = true + module.excludeFolders = [ + file(".gradle"), + file("$buildDir/bundles"), + file("$buildDir/classes"), + file("$buildDir/dependency-cache"), + file("$buildDir/libs"), + file("$buildDir/reports"), + file("$buildDir/test-results"), + file("$buildDir/tmp"), + file("$buildDir/matrix") + ] as Set + } + } + downloadSources = true + scopes.COMPILE.plus += configurations.provided + } } +// ideaModule { +// beforeConfigured { module -> +// module.excludeFolders.clear() +// } +// scopes.COMPILE.plus.add( configurations.provided ) +// whenConfigured { module -> +// module.dependencies*.exported = true +// } +// excludeDirs = [ +// file(".gradle"), +// file("$buildDir/classes"), +// file("$buildDir/dependency-cache"), +// file("$buildDir/libs"), +// file("$buildDir/reports"), +// file("$buildDir/test-results"), +// file("$buildDir/tmp"), +// file("$buildDir/matrix") +// ] as Set +// } + + eclipse { + classpath { + plusConfigurations.add( configurations.provided ) + } + } +// eclipseClasspath { +// plusConfigurations.add( configurations.provided ) +// } + // elements used to customize the generated POM used during upload def pomConfig = { name 'A Hibernate Core Module' @@ -326,6 +379,5 @@ dependsOnChildren() // 2) /gradlew.bat which is the windows bat script for for executing builds // 3) /wrapper which is a directory named by the "jarPath" config which contains other needed files. task wrapper(type: Wrapper) { - // HHH-6106 - this is needed for IntellJ generation until 1.0-milestone-3 is released. - gradleVersion = '1.0-milestone-3' + gradleVersion = '1.0-milestone-8' } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index b8085afa8d..fb27c20b66 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -30,7 +30,7 @@ buildDir = "target" repositories { mavenCentral() mavenLocal() - mavenRepo name: "jboss", urls: "http://repository.jboss.org/nexus/content/groups/public/" + mavenRepo name: "jboss", url: "http://repository.jboss.org/nexus/content/groups/public/" } targetCompatibility = "1.6" sourceCompatibility = "1.6" @@ -51,8 +51,10 @@ dependencies { groovy localGroovy() } -ideaModule { - downloadSources =true - downloadJavadoc= true - javaVersion = '1.6' +idea { + module { + downloadSources = true + downloadJavadoc = true + javaVersion = '1.6' + } } diff --git a/documentation/documentation.gradle b/documentation/documentation.gradle index 74bde4aaa8..92b91d72d5 100644 --- a/documentation/documentation.gradle +++ b/documentation/documentation.gradle @@ -2,10 +2,12 @@ buildscript { repositories { mavenCentral() mavenLocal() - mavenRepo name: "jboss", urls: "http://repository.jboss.org/nexus/content/groups/public/" + mavenRepo name: 'jboss-nexus', url: "https://repository.jboss.org/nexus/content/groups/public/" } dependencies { - classpath 'org.jboss.jdocbook:gradle-jdocbook:1.1.0' + classpath 'org.jboss.jdocbook:gradle-jdocbook:1.1.3' + classpath "org.jboss.pressgang:pressgang-xslt:2.0.1" + classpath "org.jboss.pressgang:pressgang-fonts:2.0.1" } } @@ -13,7 +15,10 @@ apply plugin: "java" apply plugin: "jdocbook" dependencies { - jdocbookStyles "org.hibernate:hibernate-jdocbook-style:2.0.1" + jdocbookStyles( "org.jboss.pressgang:pressgang-jdocbook-style:2.0.1" ) { + exclude group: 'org.eclipse.wst.css' + exclude group: 'org.eclipse.wst.sse' + } } defaultTasks 'buildDocs' @@ -49,6 +54,7 @@ jdocbook { // todo : make this part of gradle-jdocbook. // specifically the ability to supply ant-style resource for images (dir + include/exclude patterns) stageStyles_devguide.doLast { + logger.lifecycle( "Staging devguide-specific style resources") copy { into project.file( 'target/docbook/stage/devguide/images' ) from project.file( 'src/main/docbook/devguide/en-US' ) @@ -58,6 +64,17 @@ stageStyles_devguide.doLast { } } +[ 'devguide', 'manual', 'quickstart' ].each { bookName -> + tasks[ "stageStyles_$bookName" ].doLast { + logger.lifecycle( "Staging local style resources") + copy { + into project.file( "target/docbook/stage/$bookName" ) + from project.file( 'src/main/style' ) + includeEmptyDirs = false + } + } +} + task buildTutorialZip(type: Zip) { destinationDir = file( "target/work/tutorials" ) archiveName = 'hibernate-tutorials.zip' diff --git a/documentation/src/main/docbook/devguide/en-US/Author_Group.xml b/documentation/src/main/docbook/devguide/en-US/Author_Group.xml index a6f9c2f8a6..802ab8ce43 100644 --- a/documentation/src/main/docbook/devguide/en-US/Author_Group.xml +++ b/documentation/src/main/docbook/devguide/en-US/Author_Group.xml @@ -1,81 +1,80 @@ - - - - - Gavin - King - - - Christian - Bauer - + + - Steve - Ebersole + + Gavin + King + - Max - Rydahl - Andersen - + + Christian + Bauer + + - Emmanuel - Bernard - - - Hardy - Ferentschik - - - Adam - Warski - - - Gail - Badner - + + Steve + Ebersole + + + + + Max + Rydahl + Andersen + + + + + Emmanuel + Bernard + + + + + Hardy + Ferentschik + + + + + Adam + Warski + + + + + Gail + Badner + + - - James - Cobb - - Graphic Design - - - - Cheyenne - Weaver - - Graphic Design - - + + + James + Cobb + + + Graphic Design + + + + + Cheyenne + Weaver + + + Graphic Design + + - Misty - Stanley-Jones + + Misty + Stanley-Jones + diff --git a/documentation/src/main/docbook/devguide/en-US/Batch_Processing.xml b/documentation/src/main/docbook/devguide/en-US/Batch_Processing.xml index 17403e9d09..76cc3a0ff2 100644 --- a/documentation/src/main/docbook/devguide/en-US/Batch_Processing.xml +++ b/documentation/src/main/docbook/devguide/en-US/Batch_Processing.xml @@ -1,17 +1,15 @@ - -%BOOK_ENTITIES; -]> - + + + Batch Processing The following example shows an antipattern for batch inserts. Naive way to insert 100000 lines with Hibernate - + This fails with exception OutOfMemoryException after around 50000 rows on most systems. The reason is that Hibernate caches all the newly inserted Customer instances in the session-level @@ -40,7 +38,7 @@ Flushing and clearing the <classname>Session</classname> - + @@ -53,7 +51,7 @@ Using <methodname>scroll()</methodname> - + @@ -113,7 +111,7 @@ Using a <interfacename>StatelessSession</interfacename> - + The Customer instances returned by the query are immediately detached. They are never associated with any persistence context. @@ -158,7 +156,7 @@ Executing an HQL UPDATE, using the <methodname>Query.executeUpdate()</methodname> method - + In keeping with the EJB3 specification, HQL UPDATE statements, by default, do not effect the version or the @@ -168,7 +166,7 @@ Updating the version of timestamp - + @@ -178,7 +176,7 @@ A HQL <literal>DELETE</literal> statement - + Method Query.executeUpdate() returns an int value, which indicates the @@ -233,7 +231,7 @@ HQL INSERT statement - +
diff --git a/documentation/src/main/docbook/devguide/en-US/Book_Info.xml b/documentation/src/main/docbook/devguide/en-US/Book_Info.xml deleted file mode 100644 index a58cc4c983..0000000000 --- a/documentation/src/main/docbook/devguide/en-US/Book_Info.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - -%BOOK_ENTITIES; -]> - - - Hibernate Developer Guide - &version; - 1.0 - 1 - JBoss Hibernate Core - &version; - &today; - 1 - - - - - - - - - - ©rightYear; - ©rightHolder; - - - - - diff --git a/documentation/src/main/docbook/devguide/en-US/Caching.xml b/documentation/src/main/docbook/devguide/en-US/Caching.xml index 9a1a773ba4..213b39cecf 100644 --- a/documentation/src/main/docbook/devguide/en-US/Caching.xml +++ b/documentation/src/main/docbook/devguide/en-US/Caching.xml @@ -1,11 +1,11 @@ - -%BOOK_ENTITIES; -]> - - Caching + + + + Caching +
The query cache @@ -74,7 +74,7 @@ Method <methodname>setCacheRegion</methodname> - + @@ -171,7 +171,7 @@ Configuring cache providers using annotations - + You can cache the content of a collection or the identifiers, if the collection contains other entities. Use the @Cache annotation on the Collection property. @@ -250,8 +250,7 @@ Configuring cache providers using mapping files - + Just as in the , you can provide attributes in the mapping file. There are some specific differences in the syntax for the attributes in a mapping file. @@ -507,7 +506,7 @@ Evicting an item from the first-level cache - + Determining whether an item belongs to the Session cache @@ -523,7 +522,7 @@ You can evict the cached state of an instance, entire class, collection instance or entire collection role, using methods of SessionFactory. - +
Interactions between a Session and the second-level cache @@ -573,9 +572,8 @@ - Browsing the second-level cache entries via the Statistics API + Browsing the second-level cache entries via the Statistics API +
diff --git a/documentation/src/main/docbook/devguide/en-US/Data_Categorizations.xml b/documentation/src/main/docbook/devguide/en-US/Data_Categorizations.xml index c14ee41415..472e4aeb7d 100644 --- a/documentation/src/main/docbook/devguide/en-US/Data_Categorizations.xml +++ b/documentation/src/main/docbook/devguide/en-US/Data_Categorizations.xml @@ -1,9 +1,7 @@ - -%BOOK_ENTITIES; -]> - + + + Data categorizations Hibernate understands both the Java and JDBC representations of application data. The ability to read and write @@ -24,11 +22,11 @@ - Hibernate categorizes types into two high-level groups: and . + Hibernate categorizes types into two high-level groups: + and . -
+
Value types A value type does not define its own lifecycle. It is, in effect, owned by an -
+
Basic types Basic value types usually map a single database value, or column, to a single, non-aggregated Java @@ -297,7 +295,7 @@
-
+
Composite types Composite types, or embedded types, as they are called by the Java @@ -315,7 +313,7 @@
-
+
Collection types A collection type refers to the data type itself, not its contents. @@ -328,7 +326,7 @@
-
+
Entity Types Entities are application-specific classes which correlate to rows in a table, using a unique identifier. Because diff --git a/documentation/src/main/docbook/devguide/en-US/Database_Access.xml b/documentation/src/main/docbook/devguide/en-US/Database_Access.xml index a261353f9e..a7b75cdea0 100644 --- a/documentation/src/main/docbook/devguide/en-US/Database_Access.xml +++ b/documentation/src/main/docbook/devguide/en-US/Database_Access.xml @@ -1,9 +1,9 @@ - -%BOOK_ENTITIES; -]> - + + + Database access
@@ -49,15 +49,11 @@ <filename>hibernate.properties</filename> for a c3p0 connection pool - - - + <filename>hibernate.cfg.xml</filename> for a connection to the bundled HSQL database - - - +
@@ -76,8 +72,7 @@ directly and specifying XML mapping documents. If the mapping files are in the classpath, use method addResource(). - + Letting Hibernate find the mapping files for you @@ -87,11 +82,11 @@ org/hibernate/auction/Item.hbm.xml and org/hibernate/auction/Bid.hbm.xml. - + Specifying configuration properties - + Other ways to configure Hibernate programmatically @@ -120,9 +115,7 @@ Specifying configuration properties - - - + Most important Hibernate JDBC properties @@ -172,8 +165,7 @@ lib/ directory. Hibernate uses its org.hibernate.service.jdbc.connections.internal.ProxoolConnectionProvider for connection pooling if you set the hibernate.proxool.* properties. Unlike c3p0, proxool requires some additional configuration - parameters, as described by the Proxool documentation available at . + parameters, as described by the Proxool documentation available at . Important configuration properties for the Proxool connection pool diff --git a/documentation/src/main/docbook/devguide/en-US/Envers.xml b/documentation/src/main/docbook/devguide/en-US/Envers.xml index 2147263057..05e3fb2e81 100644 --- a/documentation/src/main/docbook/devguide/en-US/Envers.xml +++ b/documentation/src/main/docbook/devguide/en-US/Envers.xml @@ -1,24 +1,20 @@ - -%BOOK_ENTITIES; -]> - - Envers - - - Preface - - The aim of Hibernate Envers is to provide historical versioning of your application's entity data. Much - like source control management tools such as Subversion or Git, Hibernate Envers manages a notion of revisions - if your application data through the use of audit tables. Each transaction relates to one global revision number - which can be used to identify groups of changes (much like a change set in source control). As the revisions - are global, having a revision number, you can query for various entities at that revision, retrieving a - (partial) view of the database at that revision. You can find a revision number having a date, and the other - way round, you can get the date at which a revision was committed. - - + + + Envers + + + The aim of Hibernate Envers is to provide historical versioning of your application's entity data. Much + like source control management tools such as Subversion or Git, Hibernate Envers manages a notion of revisions + if your application data through the use of audit tables. Each transaction relates to one global revision number + which can be used to identify groups of changes (much like a change set in source control). As the revisions + are global, having a revision number, you can query for various entities at that revision, retrieving a + (partial) view of the database at that revision. You can find a revision number having a date, and the other + way round, you can get the date at which a revision was committed. + + +
Basics @@ -52,7 +48,7 @@ The audit (history) of an entity can be accessed using the AuditReader interface, which - can be obtained having an open EntityManager or Session via + can be obtained having an open EntityManager or Session via the AuditReaderFactory. See the javadocs for these classes for details on the functionality offered. @@ -398,7 +394,7 @@
-
+
Revision Log Logging data for revisions @@ -408,14 +404,18 @@ - revision number - An integral value (int/Integer or - long/Long). Essentially the primary key of the revision + + revision number - An integral value (int/Integer or + long/Long). Essentially the primary key of the revision + - revision timestamp - either a long/Long or - java.util.Date value representing the instant at which the revision was made. - When using a java.util.Date, instead of a long/Long for - the revision timestamp, take care not to store it to a column data type which will loose precision. + + revision timestamp - either a long/Long or + java.util.Date value representing the instant at which the revision was made. + When using a java.util.Date, instead of a long/Long for + the revision timestamp, take care not to store it to a column data type which will loose precision. + @@ -530,7 +530,7 @@ public class ExampleListener implements RevisionListener { -
+
Tracking entity names modified during revisions By default entity types that have been changed in each revision are not being tracked. This implies the @@ -544,14 +544,18 @@ public class ExampleListener implements RevisionListener { - Set org.hibernate.envers.track_entities_changed_in_revision parameter to - true. In this case - org.hibernate.envers.DefaultTrackingModifiedEntitiesRevisionEntity will - be implicitly used as the revision log entity. + + Set org.hibernate.envers.track_entities_changed_in_revision parameter to + true. In this case + org.hibernate.envers.DefaultTrackingModifiedEntitiesRevisionEntity will + be implicitly used as the revision log entity. + - Create a custom revision entity that extends - org.hibernate.envers.DefaultTrackingModifiedEntitiesRevisionEntity class. + + Create a custom revision entity that extends + org.hibernate.envers.DefaultTrackingModifiedEntitiesRevisionEntity class. + - Mark an appropriate field of a custom revision entity with - @org.hibernate.envers.ModifiedEntityNames annotation. The property is - required to be of ]]> type. + + Mark an appropriate field of a custom revision entity with + @org.hibernate.envers.ModifiedEntityNames annotation. The property is + required to be of ]]> type. + modifiedEntityTypes = revEntity.getModifiedEntityT
-
+
Tracking entity changes at property level By default the only information stored by Envers are revisions of modified entities. @@ -681,16 +687,16 @@ Set modifiedEntityTypes = revEntity.getModifiedEntityT - setting - org.hibernate.envers.global_with_modified_flag - configuration property to - true. - This global switch will cause adding modification flags for all audited - properties in all audited entities. + + setting org.hibernate.envers.global_with_modified_flag configuration + property to true. This global switch will cause adding modification flags + for all audited properties in all audited entities. + - using @Audited(withModifiedFlag=true) - on a property or on an entity. + + using @Audited(withModifiedFlag=true) on a property or on an entity. + @@ -710,7 +716,7 @@ Set modifiedEntityTypes = revEntity.getModifiedEntityT
-
+
Queries @@ -723,9 +729,8 @@ Set modifiedEntityTypes = revEntity.getModifiedEntityT - The queries in Envers are similar to - Hibernate Criteria, - so if you are common with them, using Envers queries will be much easier. + The queries in Envers are similar to Hibernate Criteria queries, so if you are common with them, + using Envers queries will be much easier. @@ -746,7 +751,7 @@ Set modifiedEntityTypes = revEntity.getModifiedEntityT . -
+
Querying for entities of a class at a given revision @@ -796,7 +801,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Querying for revisions, at which entities of a given class changed @@ -899,7 +904,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Querying for revisions of entity that modified given property @@ -971,7 +976,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Querying for entities modified in a given revision The basic query allows retrieving entity names and corresponding Java classes changed in a specified revision: @@ -983,22 +988,28 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> - List]]> findEntities(Number) - - Returns snapshots of all audited entities changed (added, updated and removed) in a given revision. - Executes n+1 SQL queries, where n is a number of different entity - classes modified within specified revision. + + List]]> findEntities(Number) + - Returns snapshots of all audited entities changed (added, updated and removed) in a given revision. + Executes n+1 SQL queries, where n is a number of different entity + classes modified within specified revision. + - List]]> findEntities(Number, RevisionType) - - Returns snapshots of all audited entities changed (added, updated or removed) in a given revision - filtered by modification type. Executes n+1 SQL queries, where n - is a number of different entity classes modified within specified revision. + + List]]> findEntities(Number, RevisionType) + - Returns snapshots of all audited entities changed (added, updated or removed) in a given revision + filtered by modification type. Executes n+1 SQL queries, where n + is a number of different entity classes modified within specified revision. + - >]]> findEntitiesGroupByRevisionType(Number) - - Returns a map containing lists of entity snapshots grouped by modification operation (e.g. - addition, update and removal). Executes 3n+1 SQL queries, where n - is a number of different entity classes modified within specified revision. + + >]]> findEntitiesGroupByRevisionType(Number) + - Returns a map containing lists of entity snapshots grouped by modification operation (e.g. + addition, update and removal). Executes 3n+1 SQL queries, where n + is a number of different entity classes modified within specified revision. + @@ -1021,28 +1032,36 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> - - Turn off automatic Envers event listeners registration by setting the - hibernate.listeners.envers.autoRegister - Hibernate property to false. - - - Create subclasses for appropriate event listeners. For example, if you want to conditionally audit - entity insertions, extend the - org.hibernate.envers.eventEnversPostInsertEventListenerImpl - class. Place the conditional-auditing logic in the subclasses, call the super method if auditing - should be performed. - - - Create your own implementation of org.hibernate.integrator.spi.Integrator, - similar to org.hibernate.envers.event.EnversIntegrator. Use your event listener - classes instead of the default ones. - - - For the integrator to be automatically used when Hibernate starts up, you will need to add a - META-INF/services/org.hibernate.integrator.spi.Integrator file to your jar. - The file should contain the fully qualified name of the class implementing the interface. - + + + Turn off automatic Envers event listeners registration by setting the + hibernate.listeners.envers.autoRegister Hibernate property to + false. + + + + + Create subclasses for appropriate event listeners. For example, if you want to + conditionally audit entity insertions, extend the + org.hibernate.envers.eventEnversPostInsertEventListenerImpl + class. Place the conditional-auditing logic in the subclasses, call the super method if + auditing should be performed. + + + + + Create your own implementation of org.hibernate.integrator.spi.Integrator, + similar to org.hibernate.envers.event.EnversIntegrator. Use your event + listener classes instead of the default ones. + + + + + For the integrator to be automatically used when Hibernate starts up, you will need to add a + META-INF/services/org.hibernate.integrator.spi.Integrator file to your jar. + The file should contain the fully qualified name of the class implementing the interface. + +
@@ -1103,7 +1122,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> - Additionally, there is a revision entity table which contains the information about the + Additionally, there is a revision entity table which contains the information about the global revision. By default the generated table is named REVINFO and contains just 2 columns: ID and TIMESTAMP. A row is inserted into this table on each new revision, that is, on each commit of a transaction, which @@ -1124,7 +1143,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Generating schema with Ant @@ -1219,7 +1238,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Mapping exceptions
@@ -1287,9 +1306,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> One special case are relations mapped with @OneToMany+@JoinColumn on the one side, and @ManyToOne+@JoinColumn(insertable=false, updatable=false) - on the many side. - Such relations are in fact bidirectional, but the owning side is the collection (see alse - here). + on the many side. Such relations are in fact bidirectional, but the owning side is the collection. To properly audit such relations with Envers, you can use the @AuditMappedBy annotation. @@ -1303,10 +1320,10 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]>
-
+
Advanced: Audit table partitioning -
+
Benefits of audit table partitioning @@ -1330,7 +1347,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Suitable columns for audit table partitioning @@ -1400,7 +1417,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Audit table partitioning example @@ -1526,7 +1543,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Determining a suitable partitioning column @@ -1563,7 +1580,7 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]> -
+
Determining a suitable partitioning scheme @@ -1631,39 +1648,39 @@ query.add(AuditEntity.relatedId("address").eq(relatedEntityId));]]>
-
- For information on specific configuration of Proxool, refer to the Proxool documentation available from . + For information on specific configuration of Proxool, refer to the Proxool documentation available from + .
diff --git a/documentation/src/main/docbook/devguide/en-US/appendix-Troubleshooting.xml b/documentation/src/main/docbook/devguide/en-US/appendix-Troubleshooting.xml index 1cda4f5891..a7d9c83a70 100644 --- a/documentation/src/main/docbook/devguide/en-US/appendix-Troubleshooting.xml +++ b/documentation/src/main/docbook/devguide/en-US/appendix-Troubleshooting.xml @@ -1,9 +1,7 @@ - -%BOOK_ENTITIES; -]> - + + + Troubleshooting
diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/events/Events.xml b/documentation/src/main/docbook/devguide/en-US/chapters/events/Events.xml index fdcf3f0976..b1f0f607d8 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/events/Events.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/events/Events.xml @@ -1,11 +1,10 @@ - -%BOOK_ENTITIES; -]> + - Interceptors and events @@ -42,7 +41,7 @@ A Session-scoped interceptor is specified when a session is opened. - + A SessionFactory-scoped interceptor is registered with the Configuration object @@ -52,7 +51,7 @@ states, since multiple sessions will use this interceptor potentially concurrently. - +
@@ -96,10 +95,10 @@ - + Custom LoadListener example - - + +
@@ -118,9 +117,9 @@ - + JACC listener registration example - + @@ -233,10 +232,10 @@ - + Example of specifying JPA callbacks - - + + These approaches can be mixed, meaning you can use both together. diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/multitenancy/Multi_Tenancy.xml b/documentation/src/main/docbook/devguide/en-US/chapters/multitenancy/Multi_Tenancy.xml index ecf192d3ec..11f9b1da1f 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/multitenancy/Multi_Tenancy.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/multitenancy/Multi_Tenancy.xml @@ -1,10 +1,9 @@ - -%BOOK_ENTITIES; -]> - + + Multi-tenancy
@@ -29,7 +28,7 @@ Each approach has pros and cons as well as specific techniques and considerations. Such topics are beyond the scope of this documentation. Many resources exist which delve into these - other topics. One example is + other topics. One example is which does a great job of covering these topics. @@ -126,7 +125,7 @@ Specifying tenant identifier from <interfacename>SessionFactory</interfacename> - + Additionally, when specifying configuration, a org.hibernate.MultiTenancyStrategy @@ -264,7 +263,7 @@ Strategies for <interfacename>MultiTenantConnectionProvider</interfacename> implementors Implementing MultiTenantConnectionProvider using different connection pools - + The approach above is valid for the DATABASE approach. It is also valid for the SCHEMA approach @@ -272,7 +271,7 @@ Implementing MultiTenantConnectionProvider using single connection pool - + This approach is only relevant to the SCHEMA approach. diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/pc/Persistence_Context.xml b/documentation/src/main/docbook/devguide/en-US/chapters/pc/Persistence_Context.xml index 3277a71b10..c886d150d3 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/pc/Persistence_Context.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/pc/Persistence_Context.xml @@ -1,10 +1,11 @@ - -%BOOK_ENTITIES; -]> - - Persistence Contexts + + + + + Persistence Contexts + Both the org.hibernate.Session API and @@ -66,8 +67,8 @@ Example of making an entity persistent - - + + @@ -92,8 +93,8 @@ Example of deleting an entity - - + + It is important to note that Hibernate itself can handle deleting detached state. JPA, however, disallows @@ -179,8 +180,8 @@ Example of modifying managed state - - + +
@@ -214,8 +215,8 @@ Example of reattaching a detached entity - - + + The method name update is a bit misleading here. It does not mean that an @@ -239,15 +240,15 @@ Visualizing merge - + That is not exactly what happens, but its a good visualization. Example of merging a detached entity - - + +
@@ -262,13 +263,13 @@ Examples of verifying managed state - - + + Examples of verifying laziness - - + + In JPA there is an alternative means to check laziness using the following @@ -277,7 +278,7 @@ Alternative JPA means to verify laziness - +
@@ -289,7 +290,7 @@
Usage of EntityManager.unwrap - +
\ No newline at end of file diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/query_criteria/Criteria.xml b/documentation/src/main/docbook/devguide/en-US/chapters/query_criteria/Criteria.xml index 9c7e5e42e7..ae8c10c677 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/query_criteria/Criteria.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/query_criteria/Criteria.xml @@ -1,9 +1,8 @@ - -%BOOK_ENTITIES; -]> - + + + Criteria @@ -12,11 +11,11 @@ - Hibernate offers an older, legacy org.hibernate.Criteria API which should be + Hibernate offers an older, legacy org.hibernate.Criteria API which should be considered deprecated. No feature development will target those APIs. Eventually, Hibernate-specific criteria features will be ported as extensions to the JPA - javax.persistence.criteria.CriteriaQuery. For details on the - org.hibernate.Criteria API, see . + javax.persistence.criteria.CriteriaQuery. For details on the + org.hibernate.Criteria API, see . This chapter will focus on the JPA APIs for declaring type-safe criteria queries. @@ -51,7 +50,7 @@ javax.persistence.criteria.CriteriaBuilder for this purpose: - + Each serves a different purpose depending on the expected type of the query results. @@ -83,7 +82,7 @@ Selecting the root entity - + @@ -116,7 +115,7 @@ Selecting an attribute - + @@ -141,7 +140,7 @@ Selecting an array - + @@ -158,7 +157,7 @@ Selecting an array (2) - + @@ -181,7 +180,7 @@ Selecting an wrapper - + @@ -213,7 +212,7 @@ Selecting a tuple - + @@ -311,11 +310,11 @@ javax.persistence.criteria.CriteriaQuery: - + Adding a root - + @@ -326,7 +325,7 @@ Adding multiple roots - +
@@ -342,12 +341,12 @@ Example with Embedded and ManyToOne - + Example with Collections - +
@@ -362,7 +361,7 @@ Example with Embedded and ManyToOne - + @@ -375,7 +374,7 @@ Example with Collections - +
@@ -394,7 +393,7 @@ Using parameters - + diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/query_native/Native_SQL.xml b/documentation/src/main/docbook/devguide/en-US/chapters/query_native/Native_SQL.xml index 0fea23bb63..3b063670b2 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/query_native/Native_SQL.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/query_native/Native_SQL.xml @@ -1,10 +1,7 @@ - -%BOOK_ENTITIES; -]> - + + Native SQL Queries @@ -15,7 +12,7 @@ create, update, delete, and load operations. -
+
Using a <literal>SQLQuery</literal> Execution of native SQL queries is controlled via the @@ -226,7 +223,7 @@ List loggedCats = sess.createSQLQuery(sql) .addEntity("mother", Cat.class).list() -
+
Alias and property references In most cases the above alias injection is needed. For queries @@ -239,7 +236,7 @@ List loggedCats = sess.createSQLQuery(sql) simply examples; each alias will have a unique and probably different name when used. - +
Alias injection names @@ -394,7 +391,7 @@ List pusList = query.setString("name", "Pus%").list(); -
+
Named SQL queries Named SQL queries can also be defined in the mapping document and @@ -550,7 +547,7 @@ List pusList = query.setString("name", "Pus%").list(); . - + Named SQL query using <classname>@NamedNativeQuery</classname> together with <classname>@SqlResultSetMapping</classname> @@ -574,7 +571,7 @@ List pusList = query.setString("name", "Pus%").list(); - + Implicit result set mapping @Entity @@ -616,7 +613,7 @@ public class SpaceShip { } - + Using dot notation in @FieldResult for specifying associations @@ -747,7 +744,7 @@ public class SpaceShip { org.hibernate.callable which can be true or false depending on whether the query is a stored procedure or not. -
+
Using return-property to explicitly specify column/alias names @@ -800,7 +797,7 @@ public class SpaceShip { discriminator column.
-
+
Using stored procedures for querying Hibernate3 provides support for queries via stored procedures and @@ -845,7 +842,7 @@ BEGIN <return-join> and <load-collection> are not supported. -
+
Rules/limitations for using stored procedures You cannot use stored procedures with Hibernate unless you @@ -898,7 +895,7 @@ BEGIN
-
+
Custom SQL for create, update and delete Hibernate3 can use custom SQL for create, update, and delete @@ -936,7 +933,7 @@ public class Chaos { <sql-delete> nodes. This can be seen in . - + Custom CRUD XML <class name="Person"> @@ -981,7 +978,7 @@ public class Chaos { to override the collection related statements -see . - + Overriding SQL statements for collections using annotations @@ -1057,7 +1054,7 @@ END updatePerson;
-
+
Custom SQL for loading You can also declare your own SQL (or HQL) queries for entity diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/query_ql/HQL_JPQL.xml b/documentation/src/main/docbook/devguide/en-US/chapters/query_ql/HQL_JPQL.xml index 30d20426a7..5aaf71c6ae 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/query_ql/HQL_JPQL.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/query_ql/HQL_JPQL.xml @@ -1,9 +1,8 @@ - -%BOOK_ENTITIES; -]> - + + + HQL and JPQL @@ -64,7 +63,7 @@ The BNF for SELECT statements in HQL is: - + The simplest possible HQL SELECT statement is of the form: @@ -86,7 +85,7 @@ The BNF for UPDATE statements is the same in HQL and JPQL: - + UPDATE statements, by default, do not effect the version or the timestamp attribute values for the affected entities. However, @@ -112,9 +111,9 @@ Example UPDATE query statements - - - + + +
@@ -130,7 +129,7 @@ The BNF for DELETE statements is the same in HQL and JPQL: - + A DELETE statement is also executed using the executeUpdate method of either org.hibernate.Query or @@ -144,7 +143,7 @@ HQL adds the ability to define INSERT statements as well. There is no JPQL equivalent to this. The BNF for an HQL INSERT statement is: - + The attribute_list is analogous to the column specification in the SQL INSERT statement. For entities involved in mapped inheritance, only attributes @@ -179,7 +178,7 @@ Example INSERT query statements - +
@@ -223,10 +222,10 @@ The BNF for a root entity reference is: - + Simple query example - + We see that the query is defining a root entity reference to the com.acme.Cat @@ -240,15 +239,15 @@ Simple query using entity name for root entity reference - + Multiple root entity references can also be specified. Even naming the same entity! Simple query using multiple root entity references - - + +
@@ -260,11 +259,11 @@ Explicit inner join examples - + Explicit left (outer) join examples - + An important use case for explicit joins is to define FETCH JOINS which override @@ -273,7 +272,7 @@ Fetch join example - + As you can see from the example, a fetch join is specified by injecting the keyword fetch @@ -304,7 +303,7 @@ with-clause join example - + The important distinction is that in the generated SQL the conditions of the @@ -329,7 +328,7 @@ Simple implicit join example - + An implicit join always starts from an identification variable, followed by @@ -343,7 +342,7 @@ - If the attribute represents an entity association (non-collection) or a coponent/embedded, that + If the attribute represents an entity association (non-collection) or a component/embedded, that reference can be further navigated. Basic values and collection-valued associations cannot be further navigated. @@ -355,7 +354,7 @@ Reused implicit join - + Just as with explicit joins, implicit joins may reference association or component/embedded attributes. @@ -374,7 +373,7 @@ Collection references example - + In the example, the identification variable o actually refers to the object model @@ -395,7 +394,7 @@ Qualified collection references example - + @@ -504,7 +503,7 @@ String literal examples - + @@ -512,7 +511,7 @@ Numeric literal examples - + In the scientific notation form, the E is case insensitive. @@ -558,7 +557,7 @@ Named parameter examples - +
@@ -570,7 +569,7 @@ Positional (JPQL) parameter examples - +
@@ -593,7 +592,7 @@ Numeric arithmetic examples - + The following rules apply to the result of arithmetic operations: @@ -651,7 +650,7 @@ Concatenation operation example - + See for details on the concat() function @@ -697,7 +696,7 @@ Aggregate function examples - + Aggregations often appear with grouping. For information on grouping see @@ -734,7 +733,7 @@ Extracts a portion of a string value. - + The second argument denotes the starting position. The third (optional) argument denotes the length. @@ -779,7 +778,7 @@ Locates a string within another string. - + The third argument (optional) is used to denote a position from which to start looking. @@ -1018,14 +1017,14 @@ Collection-related expressions examples - + Elements of indexed collections (arrays, lists, and maps) can be referred to by index operator. Index operator examples - + See also as there is a good deal of overlap. @@ -1044,7 +1043,7 @@ Entity type expression examples - + HQL also has a legacy form of referring to an entity type, though that legacy form is considered @@ -1064,10 +1063,10 @@ The simple form has the following syntax: - + Simple case expression example - +
@@ -1075,10 +1074,10 @@ The searched form has the following syntax: - + Searched case expression example - +
@@ -1088,7 +1087,7 @@ NULLIF example - +
@@ -1118,7 +1117,7 @@ Dynamic instantiation example - constructor - + @@ -1137,7 +1136,7 @@ Dynamic instantiation example - list - + The results from this query will be a ]]> as opposed to a ]]> @@ -1148,7 +1147,7 @@ Dynamic instantiation example - map - + The results from this query will be a >]]> as opposed to a @@ -1175,7 +1174,7 @@ Relational comparison examples - + Comparisons can also involve subquery qualifiers - ALL, ANY, @@ -1187,7 +1186,7 @@ ALL subquery comparison qualifier example - + The ANY/SOME qualifier resolves to true if the comparison is true for some of (at least one of) the @@ -1203,7 +1202,7 @@ Nullness checking examples - +
@@ -1212,7 +1211,7 @@ Performs a like comparison on string values. The syntax is: - + The semantics follow that of the SQL like expression. The pattern_value is the pattern to attempt to match in the string_expression. Just like SQL, @@ -1228,7 +1227,7 @@ Like predicate examples - +
@@ -1240,7 +1239,7 @@ Between predicate examples - +
@@ -1250,7 +1249,7 @@ IN predicates performs a check that a particular value is in a list of values. Its syntax is: - + The types of the single_valued_expression and the individual values in the single_valued_list must be consistent. JPQL limits the valid types here @@ -1285,7 +1284,7 @@ In predicate examples - +
@@ -1306,7 +1305,7 @@ Empty collection expression examples - +
@@ -1318,7 +1317,7 @@ Member-of collection expression examples - + @@ -1367,7 +1366,7 @@ Group-by illustration - + The first query retrieves the complete total of all orders. The second retrieves the total for each @@ -1383,7 +1382,7 @@ Having illustration - + The HAVING clause follows the same rules as the WHERE clause and is also made up of predicates. HAVING is @@ -1432,7 +1431,7 @@ Order-by examples - + diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/services/Services.xml b/documentation/src/main/docbook/devguide/en-US/chapters/services/Services.xml index f86a7d86ef..39087e241b 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/services/Services.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/services/Services.xml @@ -1,10 +1,8 @@ - -%BOOK_ENTITIES; -]> - + + Services
@@ -71,7 +69,7 @@
-
+
ServiceRegistry The central service API, aside from the services themselves, is the @@ -92,7 +90,7 @@
Standard services -
+
<interfacename>org.hibernate.engine.jdbc.batch.spi.BatchBuilder</interfacename> @@ -122,7 +120,7 @@
-
+
<interfacename>org.hibernate.service.config.spi.ConfigurationService</interfacename> @@ -154,7 +152,7 @@
-
+
<interfacename>org.hibernate.service.jdbc.connections.spi.ConnectionProvider</interfacename> @@ -217,7 +215,7 @@
-
+
<interfacename>org.hibernate.service.jdbc.dialect.spi.DialectFactory</interfacename> @@ -250,7 +248,7 @@
-
+
<interfacename>org.hibernate.service.jdbc.dialect.spi.DialectResolver</interfacename> @@ -289,7 +287,7 @@
-
+
<interfacename>org.hibernate.engine.jdbc.spi.JdbcServices</interfacename> @@ -320,7 +318,7 @@
-
+
<interfacename>org.hibernate.service.jmx.spi.JmxService</interfacename> @@ -361,7 +359,7 @@
-
+
<interfacename>org.hibernate.service.jndi.spi.JndiService</interfacename> @@ -391,7 +389,7 @@
-
+
<interfacename>org.hibernate.service.jta.platform.spi.JtaPlatform</interfacename> @@ -531,7 +529,7 @@
-
+
<interfacename>org.hibernate.service.jdbc.connections.spi.MultiTenantConnectionProvider</interfacename> @@ -562,7 +560,7 @@
-
+
<interfacename>org.hibernate.persister.spi.PersisterClassResolver</interfacename> @@ -595,7 +593,7 @@
-
+
<interfacename>org.hibernate.persister.spi.PersisterFactory</interfacename> @@ -628,7 +626,7 @@
-
+
<interfacename>org.hibernate.cache.spi.RegionFactory</interfacename> @@ -682,7 +680,7 @@
-
+
<interfacename>org.hibernate.service.spi.SessionFactoryServiceRegistryFactory</interfacename> @@ -717,7 +715,7 @@
-
+
<interfacename>org.hibernate.stat.Statistics</interfacename> @@ -760,7 +758,7 @@
-
+
<interfacename>org.hibernate.engine.transaction.spi.TransactionFactory</interfacename> @@ -822,7 +820,7 @@
-
+
<interfacename>org.hibernate.tool.hbm2ddl.ImportSqlCommandExtractor</interfacename> @@ -910,7 +908,7 @@
Special service registries -
+
Boot-strap registry The boot-strap registry holds services that absolutely have to be available for most things to work. @@ -924,9 +922,9 @@ org.hibernate.service.BootstrapServiceRegistryBuilder class. - + Using BootstrapServiceRegistryBuilder - +
@@ -975,7 +973,7 @@
-
+
<interfacename>org.hibernate.integrator.spi.IntegratorService</interfacename> Applications, add-ons and others all need to integrate with Hibernate which used to require @@ -1002,7 +1000,7 @@
-
+
SessionFactory registry While it is best practice to treat instances of all the registry types as targeting a given @@ -1013,7 +1011,7 @@ org.hibernate.service.spi.SessionFactoryServiceRegistry -
+
<interfacename>org.hibernate.event.service.spi.EventListenerRegistry</interfacename> @@ -1047,14 +1045,14 @@
-
+
Using services and registries Coming soon...
-
+
Integrators The org.hibernate.integrator.spi.Integrator is intended to provide a simple @@ -1081,7 +1079,7 @@ See -
+
Integrator use-cases The main use cases for an org.hibernate.integrator.spi.Integrator right @@ -1091,7 +1089,7 @@ relational models. - + Registering event listeners diff --git a/documentation/src/main/docbook/devguide/en-US/chapters/transactions/Transactions.xml b/documentation/src/main/docbook/devguide/en-US/chapters/transactions/Transactions.xml index 49583a602c..4f90252ed9 100644 --- a/documentation/src/main/docbook/devguide/en-US/chapters/transactions/Transactions.xml +++ b/documentation/src/main/docbook/devguide/en-US/chapters/transactions/Transactions.xml @@ -1,9 +1,8 @@ - -%BOOK_ENTITIES; -]> - + + + Transactions and concurrency control
@@ -191,21 +190,21 @@ org.hibernate.Session acts as a transaction-scoped cache providing repeatable reads for lookup by identifier and queries that result in loading entities. -
- - - To reduce lock contention in the database, the physical database transaction needs to be as short as - possible. Long database transactions prevent your application from scaling to a highly-concurrent load. - Do not hold a database transaction open during end-user-level work, but open it after the end-user-level - work is finished. This is concept is referred to as transactional write-behind. - - + + + To reduce lock contention in the database, the physical database transaction needs to be as short as + possible. Long database transactions prevent your application from scaling to a highly-concurrent load. + Do not hold a database transaction open during end-user-level work, but open it after the end-user-level + work is finished. This is concept is referred to as transactional write-behind. + + +
Transactional patterns (and anti-patterns) -
+
Session-per-operation anti-pattern This is an anti-pattern of opening and closing a Session for each database call @@ -226,7 +225,7 @@
-
+
Session-per-request pattern This is the most common transaction pattern. The term request here relates to the concept of a system @@ -307,7 +306,7 @@
-
+
Conversations The session-per-request pattern is not the only valid way of designing units of work. @@ -416,6 +415,9 @@
Session-per-application + + Discussion coming soon.. +
@@ -429,11 +431,11 @@ Database identity - + JVM identity - + For objects attached to a particular Session, the two notions are @@ -470,7 +472,7 @@
-
+
Common issues diff --git a/documentation/src/main/docbook/manual/en-US/Book_Info.xml b/documentation/src/main/docbook/manual/en-US/Book_Info.xml deleted file mode 100644 index ea1aaa8ad9..0000000000 --- a/documentation/src/main/docbook/manual/en-US/Book_Info.xml +++ /dev/null @@ -1,52 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - HIBERNATE - Relational Persistence for Idiomatic Java - Hibernate Reference Documentation - &version; - 1.0 - 1 - JBoss Hibernate Core - &version; - &today; - 1 - - - - - - - - - - ©rightYear; - ©rightHolder; - - - - - - - - - - - - diff --git a/documentation/src/main/docbook/manual/en-US/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml b/documentation/src/main/docbook/manual/en-US/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml index aa0b10a713..1ed5fb1ed4 100644 --- a/documentation/src/main/docbook/manual/en-US/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml +++ b/documentation/src/main/docbook/manual/en-US/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml @@ -1,47 +1,17 @@ - %BOOK_ENTITIES; ]> - - - - diff --git a/documentation/src/main/docbook/manual/en-US/content/additionalmodules.xml b/documentation/src/main/docbook/manual/en-US/content/additionalmodules.xml index 994630dad9..ac26b01edc 100644 --- a/documentation/src/main/docbook/manual/en-US/content/additionalmodules.xml +++ b/documentation/src/main/docbook/manual/en-US/content/additionalmodules.xml @@ -1,30 +1,7 @@ - - - + + + Additional modules Hibernate Core also offers integration with some external @@ -250,9 +227,10 @@ These constraints can be declared directly on the entity properties or indirectly by using constraint composition. - For more information check the Hibernate Validator reference - documentation. + + For more information check the Hibernate Validator reference documentation at + +
@@ -262,16 +240,16 @@
Description - Full text search engines like Apache - Lucene are a very powerful technology to bring free - text/efficient queries to applications. If suffers several mismatches - when dealing with a object domain model (keeping the index up to date, - mismatch between the index structure and the domain model, querying - mismatch...) Hibernate Search indexes your domain model thanks to a few - annotations, takes care of the database / index synchronization and - brings you back regular managed objects from free text queries. - Hibernate Search is using Apache - Lucene under the cover. + + Full text search engines like Apache Lucene are a very powerful technology to + bring free text/efficient queries to applications. If suffers several mismatches when dealing with a + object domain model (keeping the index up to date, mismatch between the index structure and the domain + model, querying mismatch...) Hibernate Search indexes your domain model thanks to a few annotations, + takes care of the database / index synchronization and brings you back regular managed objects from + free text queries. Hibernate Search is using + Apache Lucene + under the covers. +
@@ -284,9 +262,11 @@ hibernate.search.autoregister_listeners to false. Such a need is very uncommon and not recommended. - Check the Hibernate Search reference - documentation for more information. + + Check the Hibernate Search reference documentation ( + + ) for more information. +
diff --git a/documentation/src/main/docbook/manual/en-US/content/architecture.xml b/documentation/src/main/docbook/manual/en-US/content/architecture.xml index 38a9800ab1..badbe12b52 100644 --- a/documentation/src/main/docbook/manual/en-US/content/architecture.xml +++ b/documentation/src/main/docbook/manual/en-US/content/architecture.xml @@ -1,39 +1,11 @@ - + - -%BOOK_ENTITIES; - -]> - - + Architecture -
+
Overview @@ -55,7 +27,7 @@ illustrate 2 specifically since they are extremes. -
+
Minimal architecture @@ -73,7 +45,7 @@
-
+
Comprehensive architecture @@ -90,7 +62,7 @@
-
+
Basic APIs Here are quick discussions about some of the API objects depicted in the preceding diagrams (you will @@ -196,7 +168,7 @@
-
+
JMX Integration @@ -211,7 +183,7 @@
-
+
Contextual sessions Most applications using Hibernate need some form of "contextual" session, where a given diff --git a/documentation/src/main/docbook/manual/en-US/content/association_mapping.xml b/documentation/src/main/docbook/manual/en-US/content/association_mapping.xml index c20534ba6a..a3e7f64696 100755 --- a/documentation/src/main/docbook/manual/en-US/content/association_mapping.xml +++ b/documentation/src/main/docbook/manual/en-US/content/association_mapping.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Association Mappings @@ -58,10 +30,10 @@
-
+
Unidirectional associations -
+
Many-to-one @@ -90,7 +62,7 @@ create table Address ( addressId bigint not null primary key )
-
+
One-to-one @@ -145,7 +117,7 @@ create table Address ( personId bigint not null primary key )
-
+
One-to-many @@ -182,10 +154,10 @@ create table Address ( addressId bigint not null primary key, personId bigint no
-
+
Unidirectional associations with join tables -
+
One-to-many @@ -219,7 +191,7 @@ create table Address ( addressId bigint not null primary key )
-
+
Many-to-one @@ -253,7 +225,7 @@ create table Address ( addressId bigint not null primary key )
-
+
One-to-one @@ -289,7 +261,7 @@ create table Address ( addressId bigint not null primary key )
-
+
Many-to-many @@ -322,10 +294,10 @@ create table Address ( addressId bigint not null primary key )
-
+
Bidirectional associations -
+
one-to-many / many-to-one @@ -398,7 +370,7 @@ create table Address ( addressId bigint not null primary key )
-
+
One-to-one @@ -458,10 +430,10 @@ create table Address ( personId bigint not null primary key )
-
+
Bidirectional associations with join tables -
+
one-to-many / many-to-one @@ -504,7 +476,7 @@ create table Address ( addressId bigint not null primary key )
-
+
one to one @@ -550,7 +522,7 @@ create table Address ( addressId bigint not null primary key )
-
+
Many-to-many @@ -589,7 +561,7 @@ create table Address ( addressId bigint not null primary key )
-
+
More complex association mappings diff --git a/documentation/src/main/docbook/manual/en-US/content/basic_mapping.xml b/documentation/src/main/docbook/manual/en-US/content/basic_mapping.xml index 7cd200df2d..e9ef47b38b 100644 --- a/documentation/src/main/docbook/manual/en-US/content/basic_mapping.xml +++ b/documentation/src/main/docbook/manual/en-US/content/basic_mapping.xml @@ -1,36 +1,10 @@ - - -%BOOK_ENTITIES; -]> - + + + Basic O/R Mapping -
+
Mapping declaration Object/relational mappings can be defined in three @@ -210,7 +184,7 @@ public class Dog { ... } affect the database schemas exported by the schema export tool (for example, the not-null attribute). -
+
Entity An entity is a regular Java object (aka POJO) which will be @@ -432,47 +406,47 @@ public class Summary { - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + <class @@ -494,7 +468,7 @@ public class Summary { lazy="true|false" entity-name="EntityName" check="arbitrary sql check condition" - rowid="rowid" + rowxml:id="rowid" subselect="SQL expression" abstract="true|false" node="element-name" @@ -670,7 +644,7 @@ public class Summary { attribute and a nested mapping element.
-
+
Identifiers Mapped classes must declare the primary key @@ -692,15 +666,15 @@ public class Person { - + - + - + - + - + <id @@ -1234,7 +1208,7 @@ class UserId implements Serializable {
-
+
Identifier generator Hibernate can generate and populate identifier values for you @@ -1519,7 +1493,7 @@ public String getId() { hilo - uses a hi/lo algorithm to efficiently generate identifiers of type long, short or int, given a @@ -1611,10 +1585,9 @@ public String getId() { mac address and integrating it via the org.hibernate.id.UUIDGenerationStrategy contract. Two such libraries known at time of this - writing include http://johannburkard.de/software/uuid/ - and http://commons.apache.org/sandbox/id/uuid.html + writing include + and + @@ -1690,7 +1663,7 @@ public String getId() {
-
+
Hi/lo algorithm The hilo and seqhilo @@ -1721,7 +1694,7 @@ public String getId() { hibernate.transaction.manager_lookup_class.
-
+
UUID algorithm The UUID contains: IP address, startup time of the JVM that is @@ -1731,7 +1704,7 @@ public String getId() { using JNI.
-
+
Identity columns and sequences For databases that support identity columns (DB2, MySQL, @@ -1759,7 +1732,7 @@ public String getId() { strategies.
-
+
Assigned identifiers If you want the application to assign identifiers, as opposed @@ -1778,7 +1751,7 @@ public String getId() { define Interceptor.isUnsaved().
-
+
Primary keys assigned by triggers Hibernate does not generate DDL with triggers. It is for @@ -1846,7 +1819,7 @@ class Person {
-
+
Enhanced identifier generators Starting with release 3.2.3, there are 2 new generators which @@ -1982,7 +1955,7 @@ class Person { -
+
Identifier generator optimization For identifier generators that store values in the database, @@ -2091,7 +2064,7 @@ public class Customer implements Serializable { especially useful for people using assigned identifiers or composite keys. -
+
Version number You can add optimistic locking capability to an entity using the @@ -2128,19 +2101,19 @@ public class Flight implements Serializable { - + - + - + - + - + - + - + <version @@ -2207,7 +2180,7 @@ public class Flight implements Serializable {
-
+
Timestamp Alternatively, you can use a timestamp. Timestamps are a less @@ -2245,17 +2218,17 @@ public class Flight implements Serializable { - + - + - + - + - + - + <timestamp @@ -2331,7 +2304,7 @@ public class Flight implements Serializable {
-
+
Property You need to decide which property needs to be made persistent in a @@ -2678,7 +2651,7 @@ public class Order { require acquisition of the optimistic lock.
-
+
Declaring column attributes The column(s) used for a property mapping can be defined using @@ -2728,25 +2701,25 @@ public String getName() { ... } - + - + - + - + - + - + - + - + - + - + @Column( @@ -2801,17 +2774,17 @@ public String getName() { ... } - length (optional): + length (optional): column length (default 255) - precision + precision (optional): column decimal precision (default 0) - scale (optional): + scale (optional): column decimal scale if useful (default 0) @@ -2875,31 +2848,31 @@ public long getObjectVolume() - + - + - + - - + + - + - + - + - + - + - + - + - + <property @@ -3065,7 +3038,7 @@ public long getObjectVolume()
-
+
Embedded objects (aka components) Embeddable objects (or components) are objects whose properties @@ -3176,21 +3149,21 @@ public class Country implements Serializable { - + - + - + - + - + - + - + - + <component @@ -3302,7 +3275,7 @@ public class Country implements Serializable { -
+
Single table per class hierarchy strategy With this approach the properties of all the subclasses in a @@ -3333,13 +3306,13 @@ public class A320 extends Plane { ... } - + - + - + - + <subclass @@ -3386,7 +3359,7 @@ public class A320 extends Plane { ... } For information about inheritance mappings see . -
+
Discriminator Discriminators are required for polymorphic persistence using @@ -3465,15 +3438,15 @@ public class A320 extends Plane { ... } - + - + - + - + - + <discriminator @@ -3535,7 +3508,7 @@ public class A320 extends Plane { ... }
-
+
Joined subclass strategy Each subclass can also be mapped to its own table. This is @@ -3577,13 +3550,13 @@ public class DomesticCat extends Cat { - + - + - + - + <joined-subclass @@ -3672,7 +3645,7 @@ public class DomesticCat extends Cat { linkend="inheritance" />.
-
+
Table per class strategy A third option is to map only the concrete classes of an @@ -3692,13 +3665,13 @@ public class Flight implements Serializable { ... } - + - + - + - + <union-subclass @@ -3862,7 +3835,7 @@ public class Plane extends FlyingObject { inherit them.
-
+
Mapping one entity to several tables While not recommended for a fresh schema, some legacy databases @@ -3997,17 +3970,17 @@ public class Cat implements Serializable { - + - + - + - + - + - + <join @@ -4163,7 +4136,7 @@ public class Cat implements Serializable { overrides any lazy attribute (an association loaded through a JOIN strategy cannot be lazy). -
+
Using a foreign key or an association table An ordinary association to another persistent class is declared @@ -4352,39 +4325,39 @@ class Home { - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + <many-to-one @@ -4562,7 +4535,7 @@ class Home { <many-to-one name="owner" property-ref="identity.ssn" column="OWNER_SSN"/>
-
+
Sharing the primary key with the associated entity The second approach is to ensure an entity and its associated @@ -4605,25 +4578,25 @@ public class Heart { - + - + - + - + - + - + - + - + - + - + <one-to-one @@ -4754,7 +4727,7 @@ public class Heart {
-
+
Natural-id Although we recommend the use of surrogate keys as primary keys, @@ -4814,7 +4787,7 @@ List results = s.createCriteria( Citizen.class )
-
+
Any There is one more type of property mapping. The @@ -4889,17 +4862,17 @@ package org.hibernate.test.annotations.any; - + - + - + - + - + - + <any @@ -4955,7 +4928,7 @@ package org.hibernate.test.annotations.any;
-
+
Properties The <properties> element allows the @@ -4967,15 +4940,15 @@ package org.hibernate.test.annotations.any; - + - + - + - + - + <properties @@ -5085,7 +5058,7 @@ class Home { The hbm.xml structure has some specificities naturally not present when using annotations, let's describe them briefly. -
+
Doctype All XML mappings should declare the doctype shown. The actual @@ -5096,7 +5069,7 @@ class Home { an Internet connection, check the DTD declaration against the contents of your classpath. -
+
EntityResolver Hibernate will first attempt to resolve DTDs in its classpath. @@ -5139,7 +5112,7 @@ class Home {
-
+
Hibernate-mapping This element has several optional attributes. The @@ -5156,19 +5129,19 @@ class Home { - + - + - + - + - + - + - + <hibernate-mapping @@ -5241,8 +5214,8 @@ class Home { Animal.hbm.xml.
-
- Key +
+ Key The <key> element is featured a few times within this guide. It appears anywhere the parent mapping @@ -5252,17 +5225,17 @@ class Home { - + - + - + - + - + - + <key @@ -5329,7 +5302,7 @@ class Home { not-null="true">.
-
+
Import If your application has two persistent classes with the same @@ -5342,9 +5315,9 @@ class Home { - + - + <import @@ -5372,7 +5345,7 @@ class Home {
-
+
Column and formula elements Mapping elements which accept a column @@ -5419,10 +5392,10 @@ class Home {
-
+
Hibernate types -
+
Entities and values In relation to the persistence service, Java language-level @@ -5481,7 +5454,7 @@ class Home { support null semantics.
-
+
Basic value types The built-in basic mapping types can be @@ -5673,7 +5646,7 @@ class Home { string type.
-
+
Custom value types It is relatively easy for developers to create their own value @@ -5753,7 +5726,7 @@ class Home {
-
+
Mapping a class more than once It is possible to provide more than one mapping for a particular @@ -5790,7 +5763,7 @@ class Home {
-
+
SQL quoted identifiers You can force Hibernate to quote an identifier in the generated SQL @@ -5812,7 +5785,7 @@ class LineItem { </class>
-
+
Generated properties Generated properties are properties that have their values generated @@ -5848,7 +5821,7 @@ class LineItem { @Generated.
-
+
Column transformers: read and write expressions Hibernate allows you to customize the SQL it uses to read and write @@ -5920,7 +5893,7 @@ class User { exactly one '?' placeholder for the value.
-
+
Auxiliary database objects Auxiliary database objects allow for the CREATE and DROP of diff --git a/documentation/src/main/docbook/manual/en-US/content/batch.xml b/documentation/src/main/docbook/manual/en-US/content/batch.xml index f5b375b02c..018e5bb621 100755 --- a/documentation/src/main/docbook/manual/en-US/content/batch.xml +++ b/documentation/src/main/docbook/manual/en-US/content/batch.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Batch processing @@ -62,7 +34,7 @@ session.close();]]> - + Hibernate disables insert batching at the JDBC level transparently if you use an identity identifier generator. @@ -79,7 +51,7 @@ session.close();]]> CacheMode to disable interaction with the second-level cache. -
+
Batch inserts @@ -106,7 +78,7 @@ session.close();]]>
-
+
Batch updates @@ -137,7 +109,7 @@ session.close();]]>
-
+
The StatelessSession interface Alternatively, Hibernate provides a command-oriented API that can be used for @@ -186,7 +158,7 @@ session.close();]]>
-
+
DML-style operations diff --git a/documentation/src/main/docbook/manual/en-US/content/best_practices.xml b/documentation/src/main/docbook/manual/en-US/content/best_practices.xml index bee8235966..1d94e4b60e 100644 --- a/documentation/src/main/docbook/manual/en-US/content/best_practices.xml +++ b/documentation/src/main/docbook/manual/en-US/content/best_practices.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Best Practices diff --git a/documentation/src/main/docbook/manual/en-US/content/bibliography.xml b/documentation/src/main/docbook/manual/en-US/content/bibliography.xml index 0c2cfecf38..708440f93a 100644 --- a/documentation/src/main/docbook/manual/en-US/content/bibliography.xml +++ b/documentation/src/main/docbook/manual/en-US/content/bibliography.xml @@ -1,44 +1,19 @@ - - -%BOOK_ENTITIES; - -]> + References - + PoEAA Patterns of Enterprise Application Architecture - 0-321-12742-0 + 0-321-12742-0 - Martin - Fowler + + Martin + Fowler + @@ -50,22 +25,26 @@ - + JPwH Java Persistence with Hibernate Second Edition of Hibernate in Action - 1-932394-88-5 + 1-932394-88-5 - + - Christian - Bauer + + Christian + Bauer + - Gavin - King + + Gavin + King + diff --git a/documentation/src/main/docbook/manual/en-US/content/collection_mapping.xml b/documentation/src/main/docbook/manual/en-US/content/collection_mapping.xml index 0a4e9c0faa..78d0c2b85c 100644 --- a/documentation/src/main/docbook/manual/en-US/content/collection_mapping.xml +++ b/documentation/src/main/docbook/manual/en-US/content/collection_mapping.xml @@ -1,36 +1,10 @@ - - -%BOOK_ENTITIES; -]> - + + + Collection mapping -
+
Persistent collections Naturally Hibernate also allows to persist collections. These @@ -102,7 +76,7 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set
-
+
How to map collections Using annotations you can map Collections, @@ -112,7 +86,7 @@ kittens = cat.getKittens(); // Okay, kittens collection is a Set @ElementCollection. In the simplest case a collection mapping looks like this: - + Collection mapping using @OneToMany and @JoinColumn @Entity @@ -143,9 +117,8 @@ public class Part { also use a join table as seen in . - - Collection mapping using - @OneToMany and @JoinTable + + Collection mapping using @OneToMany and @JoinTable @Entity public class Product { @@ -191,7 +164,7 @@ public class Part { <set> element is used for mapping properties of type Set. - + Mapping a Set using <set> <class name="Product"> @@ -230,11 +203,11 @@ public class Part { - + - + - + <one-to-many @@ -295,33 +268,33 @@ public class Part { - + - + - + - + - + - + - + - + - + - + - + - + - + - + <map @@ -448,7 +421,7 @@ public class Part { paragraphs we will now focus details like physical mapping considerations, indexed collections and collections of value types. -
+
Collection foreign keys On the database level collection instances are distinguished by @@ -479,12 +452,12 @@ public class Part { @OnDelete(action=OnDeleteAction.CASCADE) - See for more information + See for more information about the <key> element.
-
- Indexed collections +
+ Indexed collections In the following paragraphs we have a closer at the indexed collections List and Map @@ -633,9 +606,9 @@ public class Order { - + - + <list-index @@ -825,11 +798,11 @@ public class Order { - + - + - + <map-key @@ -863,11 +836,11 @@ public class Order { - + - + - + <map-key-many-to-many @@ -897,7 +870,7 @@ public class Order {
-
+
Collections of basic types and embeddable objects In some situations you don't need to associate two entities but @@ -996,11 +969,11 @@ public class User { - + - + - + <element @@ -1036,11 +1009,11 @@ public class User {
-
+
Advanced collection mappings -
- Sorted collections +
+ Sorted collections Hibernate supports collections implementing java.util.SortedMap and @@ -1132,7 +1105,7 @@ public SortedSet<Ticket> getTickets() {
-
+
Bidirectional associations A bidirectional association allows navigation @@ -1379,7 +1352,7 @@ public class Customer { category can have many items and each item can be in many categories: - + Many to many association using Hibernate mapping files <class name="Category"> @@ -1425,7 +1398,7 @@ session.persist(category); // The relationship will be saved
-
+
Bidirectional associations with indexed collections There are some additional considerations for bidirectional @@ -1500,7 +1473,7 @@ session.persist(category); // The relationship will be saved
-
+
Ternary associations There are three possible approaches to mapping a ternary @@ -1534,7 +1507,7 @@ public class Company { composite elements, which will be discussed later.
-
+
<literal>Using an <idbag></literal> The majority of the many-to-many associations and collections of @@ -1576,7 +1549,7 @@ public class Company { - -
+
Collection examples This section covers collection examples. diff --git a/documentation/src/main/docbook/manual/en-US/content/component_mapping.xml b/documentation/src/main/docbook/manual/en-US/content/component_mapping.xml index a347e53330..cf2ed6343a 100644 --- a/documentation/src/main/docbook/manual/en-US/content/component_mapping.xml +++ b/documentation/src/main/docbook/manual/en-US/content/component_mapping.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Component Mapping @@ -37,7 +9,7 @@ throughout Hibernate. -
+
Dependent objects @@ -163,7 +135,7 @@
-
+
Collections of dependent objects @@ -264,7 +236,7 @@
-
+
Components as Map indices @@ -275,7 +247,7 @@
-
+
Components as composite identifiers @@ -415,7 +387,7 @@
-
+
Dynamic components diff --git a/documentation/src/main/docbook/manual/en-US/content/configuration.xml b/documentation/src/main/docbook/manual/en-US/content/configuration.xml index 0cc87eea0a..9442bd2663 100644 --- a/documentation/src/main/docbook/manual/en-US/content/configuration.xml +++ b/documentation/src/main/docbook/manual/en-US/content/configuration.xml @@ -1,33 +1,7 @@ - - -%BOOK_ENTITIES; -]> - + + + Configuration Hibernate is designed to operate in many different environments and, @@ -37,7 +11,7 @@ etc/ that displays the various options. Simply put the example file in your classpath and customize it to suit your needs. -
+
Programmatic configuration An instance of @@ -114,7 +88,7 @@ SessionFactory is created.
-
+
Obtaining a SessionFactory When all mappings have been parsed by the @@ -130,7 +104,7 @@ useful if you are using more than one database.
-
+
JDBC connections It is advisable to have the @@ -320,7 +294,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.connection.provider_class property.
-
+
Optional configuration properties There are a number of other properties that control the behavior of @@ -336,7 +310,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect above. -
+
Hibernate Configuration Properties @@ -503,7 +477,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect databases (if a sequence or a table is used for id generation). -
+
Hibernate JDBC and Connection Properties @@ -666,7 +640,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
- +
Hibernate Cache Properties @@ -761,7 +735,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
- Hibernate Transaction Properties @@ -835,7 +809,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
- +
Miscellaneous Properties @@ -955,7 +929,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
-
+
SQL Dialects Always set the hibernate.dialect property to @@ -964,7 +938,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect defaults for some of the other properties listed above. This means that you will not have to specify them manually. - +
Hibernate SQL Dialects (<literal>hibernate.dialect</literal>) @@ -1149,7 +1123,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
-
+
Outer Join Fetching If your database supports ANSI, Oracle or Sybase style outer @@ -1171,7 +1145,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect information.
-
+
Binary Streams Oracle limits the size of byte arrays that can @@ -1182,7 +1156,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect is a system-level setting only.
-
+
Second-level and query cache The properties prefixed by hibernate.cache @@ -1191,7 +1165,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect information.
-
+
Query Language Substitution You can define new Hibernate query tokens using @@ -1209,7 +1183,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect function.
-
+
Hibernate statistics If you enable hibernate.generate_statistics, @@ -1221,18 +1195,26 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
-
+
Logging - Hibernate utilizes Simple Logging - Facade for Java (SLF4J) in order to log various system events. + + + Completely out of date. Hibernate uses JBoss Logging starting in 4.0. + This will get documented as we migrate this content to the Developer Guide. + + + + Hibernate utilizes Simple Logging + Facade for Java (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 slf4j-api.jar in your classpath together with the jar file for your preferred binding - slf4j-log4j12.jar - in the case of Log4J. See the SLF4J documentation for more + in the case of Log4J. See the SLF4J + documentation + for more detail. To use Log4j you will also need to place a log4j.properties file in your classpath. An example properties file is distributed with Hibernate in the @@ -1244,7 +1226,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect troubleshooting device. The most interesting log categories are the following: - +
Hibernate Log Categories @@ -1332,7 +1314,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.show_sql enabled. -
+
Implementing a <literal>NamingStrategy</literal> The interface org.hibernate.cfg.NamingStrategy @@ -1403,7 +1385,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect them on each entity or collection mapping.
-
+
XML configuration file An alternative approach to configuration is to specify a full @@ -1467,7 +1449,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect .buildSessionFactory();
-
+
Java EE Application Server integration Hibernate has the following integration points for J2EE @@ -1524,7 +1506,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.connection.aggressive_release to true if your application server shows "connection containment" exceptions. -
+
Transaction strategy configuration The Hibernate Session API is independent of any @@ -1584,7 +1566,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect you have to specify how Hibernate should obtain a reference to the TransactionManager: -
+
JTA TransactionManagers @@ -1673,7 +1655,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
-
+
JNDI-bound <literal>SessionFactory</literal> A JNDI-bound Hibernate SessionFactory can @@ -1718,7 +1700,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect chapter 1.
-
+
Current Session context management with JTA The easiest way to handle Sessions and @@ -1743,7 +1725,7 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect transaction demarcation with CMT is preferred.
-
+
JMX deployment The line cfg.buildSessionFactory() still has to diff --git a/documentation/src/main/docbook/manual/en-US/content/events.xml b/documentation/src/main/docbook/manual/en-US/content/events.xml index 319b3bea00..a57ac38013 100755 --- a/documentation/src/main/docbook/manual/en-US/content/events.xml +++ b/documentation/src/main/docbook/manual/en-US/content/events.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Interceptors and events @@ -38,7 +10,7 @@ functionality and the extension of Hibernate functionality. -
+
Interceptors @@ -165,7 +137,7 @@ public class AuditInterceptor extends EmptyInterceptor {
-
+
Event system @@ -219,7 +191,7 @@ public class AuditInterceptor extends EmptyInterceptor {
-
+
Hibernate declarative security Usually, declarative security in Hibernate applications is managed in a session facade diff --git a/documentation/src/main/docbook/manual/en-US/content/example_mappings.xml b/documentation/src/main/docbook/manual/en-US/content/example_mappings.xml index 602584061b..debda408bd 100644 --- a/documentation/src/main/docbook/manual/en-US/content/example_mappings.xml +++ b/documentation/src/main/docbook/manual/en-US/content/example_mappings.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Example: Various Mappings @@ -37,7 +9,7 @@ This chapters explores some more complex association mappings. -
+
Employer/Employee @@ -150,7 +122,7 @@ create sequence employer_id_seq]]>
-
+
Author/Work @@ -272,7 +244,7 @@ alter table author_work
-
+
Customer/Order/Product @@ -380,7 +352,7 @@ alter table line_items
-
+
Miscellaneous example mappings @@ -391,7 +363,7 @@ alter table line_items -
+
"Typed" one-to-one association @@ -421,7 +393,7 @@ alter table line_items ]]>
-
+
Composite key example @@ -538,7 +510,7 @@ alter table line_items ]]>
-
+
Many-to-many with shared composite key attribute @@ -577,7 +549,7 @@ alter table line_items ]]>
-
+
Content based discrimination @@ -631,7 +603,7 @@ alter table line_items ]]>
-
+
Associations on alternate keys diff --git a/documentation/src/main/docbook/manual/en-US/content/example_parentchild.xml b/documentation/src/main/docbook/manual/en-US/content/example_parentchild.xml index a7f5a2c101..37ac423b95 100644 --- a/documentation/src/main/docbook/manual/en-US/content/example_parentchild.xml +++ b/documentation/src/main/docbook/manual/en-US/content/example_parentchild.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Example: Parent/Child @@ -45,7 +17,7 @@ -
+
A note about collections @@ -88,7 +60,7 @@
-
+
Bidirectional one-to-many @@ -201,7 +173,7 @@ session.flush();]]>
-
+
Cascading life cycle @@ -274,7 +246,7 @@ session.flush();]]>
-
+
Cascades and <literal>unsaved-value</literal> @@ -312,7 +284,7 @@ session.flush();]]>
-
+
Conclusion diff --git a/documentation/src/main/docbook/manual/en-US/content/example_weblog.xml b/documentation/src/main/docbook/manual/en-US/content/example_weblog.xml index e44d76cd3e..86b7315256 100644 --- a/documentation/src/main/docbook/manual/en-US/content/example_weblog.xml +++ b/documentation/src/main/docbook/manual/en-US/content/example_weblog.xml @@ -1,38 +1,10 @@ - + - -%BOOK_ENTITIES; - -]> - - + Example: Weblog Application -
+
Persistent Classes @@ -116,7 +88,7 @@ public class BlogItem {
-
+
Hibernate Mappings @@ -209,7 +181,7 @@ public class BlogItem {
-
+
Hibernate Code diff --git a/documentation/src/main/docbook/manual/en-US/content/filters.xml b/documentation/src/main/docbook/manual/en-US/content/filters.xml index 0298fbc151..68ec947532 100755 --- a/documentation/src/main/docbook/manual/en-US/content/filters.xml +++ b/documentation/src/main/docbook/manual/en-US/content/filters.xml @@ -1,33 +1,7 @@ - - -%BOOK_ENTITIES; -]> - + + + Filtering data Hibernate3 provides an innovative new approach to handling data with @@ -35,7 +9,7 @@ named, parameterized filter that can be enabled or disabled for a particular Hibernate session. -
+
Hibernate filters Hibernate3 has the ability to pre-define filter criteria and attach diff --git a/documentation/src/main/docbook/manual/en-US/content/inheritance_mapping.xml b/documentation/src/main/docbook/manual/en-US/content/inheritance_mapping.xml index 3f291cb849..f1f3362018 100644 --- a/documentation/src/main/docbook/manual/en-US/content/inheritance_mapping.xml +++ b/documentation/src/main/docbook/manual/en-US/content/inheritance_mapping.xml @@ -1,38 +1,10 @@ - + - -%BOOK_ENTITIES; - -]> - - + Inheritance mapping -
+
The three strategies @@ -103,7 +75,7 @@ ]]> -
+
Table per class hierarchy @@ -140,7 +112,7 @@
-
+
Table per subclass @@ -176,7 +148,7 @@
-
+
Table per subclass: using a discriminator @@ -227,7 +199,7 @@
-
+
Mixing table per class hierarchy with table per subclass @@ -266,7 +238,7 @@
-
+
Table per concrete class @@ -315,7 +287,7 @@
-
+
Table per concrete class using implicit polymorphism @@ -353,7 +325,7 @@ using XML entities (for example, [ <!ENTITY allproperties SYSTEM "allproperties.xml"> ] in the DOCTYPE declaration and - &allproperties; in the mapping). + in the mapping). @@ -376,7 +348,7 @@
-
+
Mixing implicit polymorphism with other inheritance mappings @@ -429,7 +401,7 @@
-
+
Limitations diff --git a/documentation/src/main/docbook/manual/en-US/content/performance.xml b/documentation/src/main/docbook/manual/en-US/content/performance.xml index d4747c22ec..af83475b08 100644 --- a/documentation/src/main/docbook/manual/en-US/content/performance.xml +++ b/documentation/src/main/docbook/manual/en-US/content/performance.xml @@ -1,36 +1,10 @@ - - -%BOOK_ENTITIES; -]> - + + + Improving performance -
+
Fetching strategies Hibernate uses a fetching strategy to retrieve @@ -128,7 +102,7 @@ for what data is always available in any detached instance of a particular class. -
+
Working with lazy associations By default, Hibernate3 uses lazy select fetching for collections @@ -176,7 +150,7 @@ Integer accessLevel = (Integer) permissions.get("accounts"); // Error!
-
+
Tuning fetch strategies Select fetching (the default) is extremely vulnerable to N+1 @@ -243,7 +217,7 @@ Integer accessLevel = (Integer) permissions.get("accounts"); // Error!
-
+
Single-ended association proxies Lazy fetching for collections is implemented using Hibernate's own @@ -371,7 +345,7 @@ Cat fritz = (Cat) iter.next(); initialization.
-
+
Initializing collections and proxies A LazyInitializationException will be thrown by @@ -460,7 +434,7 @@ Cat fritz = (Cat) iter.next(); s.createFilter( lazyCollection, "").setFirstResult(0).setMaxResults(10).list();
-
+
Using batch fetching Using batch fetching, Hibernate can load several uninitialized @@ -512,7 +486,7 @@ Cat fritz = (Cat) iter.next(); path might be a better option for read-mostly trees.
-
+
Using subselect fetching If one lazy collection or single-valued proxy has to be fetched, @@ -523,7 +497,7 @@ Cat fritz = (Cat) iter.next();
-
+
Fetch profiles Another way to affect the fetching strategy for loading associated @@ -640,13 +614,14 @@ Customer customer = (Customer) session.get( Customer.class, customerId ); @FetchProfiles can be used. - Currently only join style fetch profiles are supported, but they - plan is to support additional styles. See HHH-3414 - for details. + + Currently only join style fetch profiles are supported, but they plan is to support additional styles. See + HHH-3414 + for details. +
-
+
Using lazy property fetching Hibernate3 supports the lazy fetching of individual properties. @@ -679,7 +654,7 @@ Customer customer = (Customer) session.get( Customer.class, customerId ); <taskdef name="instrument" classname="org.hibernate.tool.instrument.InstrumentTask"> <classpath path="${jar.path}"/> <classpath path="${classes.dir}"/> - <classpath refid="lib.class.path"/> + <classpath refxml:id="lib.class.path"/> </taskdef> <instrument verbose="true"> @@ -699,7 +674,7 @@ Customer customer = (Customer) session.get( Customer.class, customerId );
-
+
The Second Level Cache A Hibernate Session is a transaction-level cache @@ -720,7 +695,7 @@ Customer customer = (Customer) session.get( Customer.class, customerId ); versions prior to Hibernate 3.2 use EhCache as the default cache provider. - +
Cache Providers @@ -835,7 +810,7 @@ Customer customer = (Customer) session.get( Customer.class, customerId );
-
+
Cache mappings As we have done in previous chapters we are looking at the two @@ -903,7 +878,7 @@ Customer customer = (Customer) session.get( Customer.class, customerId ); that. - + Definition of cache concurrency strategy via <classname>@Cache</classname> @@ -934,17 +909,17 @@ public SortedSet<Ticket> getTickets() { its attributes. It allows you to define the caching strategy and region of a given second level cache. - + <classname>@Cache</classname> annotation with attributes - + - + - + @Cache( @@ -980,17 +955,17 @@ public SortedSet<Ticket> getTickets() { linkend="example-hibernate-cache-mapping-element" /> the parallels to anotations is obvious. - + The Hibernate <literal><cache></literal> mapping element - + - + - + <cache @@ -1034,7 +1009,7 @@ public SortedSet<Ticket> getTickets() { strategies
-
+
Strategy: read only If your application needs to read, but not modify, instances of a @@ -1043,7 +1018,7 @@ public SortedSet<Ticket> getTickets() { in a cluster.
-
+
Strategy: read/write If the application needs to update data, a @@ -1061,7 +1036,7 @@ public SortedSet<Ticket> getTickets() { do not support locking.
-
+
Strategy: nonstrict read/write If the application only occasionally needs to update data (i.e. if @@ -1075,7 +1050,7 @@ public SortedSet<Ticket> getTickets() { Session.disconnect() is called.
-
+
Strategy: transactional The transactional cache strategy provides @@ -1084,7 +1059,7 @@ public SortedSet<Ticket> getTickets() { hibernate.transaction.manager_lookup_class.
-
+
Cache-provider/concurrency-strategy compatibility @@ -1212,7 +1187,7 @@ public SortedSet<Ticket> getTickets() {
-
+
Managing the caches Whenever you pass an object to save(), @@ -1316,13 +1291,13 @@ hibernate.cache.use_structured_entries true
-
+
The Query Cache Query result sets can also be cached. This is only useful for queries that are run frequently with the same parameters. -
+
Enabling query caching Caching of query results introduces some overhead in terms of your @@ -1377,7 +1352,7 @@ hibernate.cache.use_structured_entries true
-
+
Query cache regions If you require fine-grained control over query cache expiration @@ -1403,14 +1378,14 @@ hibernate.cache.use_structured_entries true
-
+
Understanding Collection performance 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. -
+
Taxonomy Hibernate defines three basic kinds of collections: @@ -1484,7 +1459,7 @@ hibernate.cache.use_structured_entries true individual rows of the collection.
-
+
Lists, maps, idbags and sets are the most efficient collections to update @@ -1513,7 +1488,7 @@ hibernate.cache.use_structured_entries true of collection update performance simply do not apply.
-
+
Bags and lists are the most efficient inverse collections There is a particular case, however, in which bags, and also @@ -1534,7 +1509,7 @@ p.getChildren().add(c); //no need to fetch the collection! sess.flush();
-
+
One shot delete Deleting collection elements one by one can sometimes be extremely @@ -1580,7 +1555,7 @@ sess.flush();
-
+
Monitoring performance Optimization is not much use without monitoring and access to @@ -1588,7 +1563,7 @@ sess.flush(); internal operations. Statistics in Hibernate are available per SessionFactory. -
+
Monitoring a SessionFactory You can access SessionFactory metrics in two @@ -1644,7 +1619,7 @@ server.registerMBean(stats, on); // Register the MBean on the serverlogSummary() method.
-
+
Metrics Hibernate provides a number of metrics, from basic information to diff --git a/documentation/src/main/docbook/manual/en-US/content/persistent_classes.xml b/documentation/src/main/docbook/manual/en-US/content/persistent_classes.xml index e72286b8a0..d8fbd15f47 100644 --- a/documentation/src/main/docbook/manual/en-US/content/persistent_classes.xml +++ b/documentation/src/main/docbook/manual/en-US/content/persistent_classes.xml @@ -1,34 +1,7 @@ - - -%BOOK_ENTITIES; -]> + - + Persistent Classes @@ -45,10 +18,10 @@ java.util.Map instances, for example). -
+
A simple POJO example - + Simple POJO representing a cat package eg; import java.util.Set; @@ -67,7 +40,7 @@ private float weight; private Set kittens = new HashSet(); private void setId(Long id) { - this.id=id; + this.xml:id=id; } public Long getId() { return id; @@ -135,19 +108,19 @@ private float weight; The four main rules of persistent classes are explored in more detail in the following sections. -
+
Implement a no-argument constructor Cat 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 - java.lang.reflect.Constructor.newInstance(). It is recommended + java.lang.reflect.Constructor.newInstance(). It is recommended that this constructor be defined with at least package visibility in order for runtime proxy generation to work properly.
-
+
Provide an identifier property @@ -180,7 +153,7 @@ private float weight;
-
+
Prefer non-final classes (semi-optional) @@ -194,12 +167,12 @@ private float weight; . - + Disabling proxies in <literal>hbm.xml</literal> ...]]> - + Disabling proxies in annotations @@ -212,12 +185,12 @@ private float weight; - + Proxying an interface in <literal>hbm.xml</literal> ...]]> - + Proxying an interface in annotations @@ -231,7 +204,7 @@ private float weight;
-
+
Declare accessors and mutators for persistent fields (optional) @@ -251,7 +224,7 @@ private float weight;
-
+
Implementing inheritance A subclass must also observe the first and second rules. It inherits @@ -272,7 +245,7 @@ public class DomesticCat extends Cat { }
-
+
Implementing <literal>equals()</literal> and <literal>hashCode()</literal> @@ -350,7 +323,7 @@ public class DomesticCat extends Cat { key.
-
+
Dynamic models @@ -478,7 +451,7 @@ dynamicSession.close()
-
+
Tuplizers @@ -521,7 +494,7 @@ dynamicSession.close() shows how to do the same in hbm.xml - + Specify custom tuplizers in annotations @Entity @Tuplizer(impl = DynamicEntityTuplizer.class) @@ -539,7 +512,7 @@ public interface Cuisine { public void setCountry(Country country); } - + Specify custom tuplizers in <literal>hbm.xml</literal> <hibernate-mapping> <class entity-name="Customer"> @@ -561,7 +534,7 @@ public interface Cuisine {
-
+
EntityNameResolvers diff --git a/documentation/src/main/docbook/manual/en-US/content/portability.xml b/documentation/src/main/docbook/manual/en-US/content/portability.xml index a2358ab49a..7f2369f83b 100644 --- a/documentation/src/main/docbook/manual/en-US/content/portability.xml +++ b/documentation/src/main/docbook/manual/en-US/content/portability.xml @@ -1,36 +1,10 @@ - + - -%BOOK_ENTITIES; - -]> - - + Database Portability Considerations -
+
Portability Basics @@ -43,7 +17,7 @@
-
+
Dialect @@ -56,7 +30,7 @@
-
+
Dialect resolution @@ -102,7 +76,7 @@
-
+
Identifier generation @@ -132,7 +106,8 @@ Starting with version 3.2.3, Hibernate comes with a set of - enhanced identifier generators targetting + enhanced + identifier generators targetting portability in a much different way. @@ -158,7 +133,7 @@
-
+
Database functions @@ -191,7 +166,7 @@
-
+
Type mappings @@ -200,11 +175,11 @@ diff --git a/documentation/src/main/docbook/manual/en-US/content/preface.xml b/documentation/src/main/docbook/manual/en-US/content/preface.xml index 51cdc59dfd..70d41973b1 100644 --- a/documentation/src/main/docbook/manual/en-US/content/preface.xml +++ b/documentation/src/main/docbook/manual/en-US/content/preface.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Preface @@ -37,7 +9,8 @@ Development costs are significantly higher due to a paradigm mismatch between how data is represented in objects versus relational databases. Hibernate is an Object/Relational Mapping solution for Java environments. The term Object/Relational Mapping refers to the technique of mapping data from an object model representation - to a relational data model representation (and visa versa). See + to a relational data model representation (and visa versa). See + for a good high-level discussion. @@ -50,12 +23,12 @@ - http://www.agiledata.org/essays/dataModeling101.html + - http://en.wikipedia.org/wiki/Data_modeling + @@ -117,8 +90,8 @@ information. Consider reading if you need more help with application design, or if you prefer a step-by-step tutorial. Also visit - and download - the example application from . + + and download the example application from . @@ -147,21 +120,21 @@ Trying stuff out and reporting bugs. See - http://hibernate.org/issuetracker.html + details. Trying your hand at fixing some bugs or implementing enhancements. Again, see - http://hibernate.org/issuetracker.html + details. - http://hibernate.org/community.html list - a few ways to engage in the community. + + lists a few ways to engage in the community. @@ -170,7 +143,8 @@ - There are also IRC + There are also + IRC channels for both user and developer discussions. diff --git a/documentation/src/main/docbook/manual/en-US/content/query_criteria.xml b/documentation/src/main/docbook/manual/en-US/content/query_criteria.xml index ed10448a05..6fa014e543 100644 --- a/documentation/src/main/docbook/manual/en-US/content/query_criteria.xml +++ b/documentation/src/main/docbook/manual/en-US/content/query_criteria.xml @@ -1,42 +1,14 @@ - + - -%BOOK_ENTITIES; - -]> - - + Criteria Queries Hibernate features an intuitive, extensible criteria query API. -
+
Creating a <literal>Criteria</literal> instance @@ -51,7 +23,7 @@ List cats = crit.list();]]>
-
+
Narrowing the result set @@ -123,7 +95,7 @@ List cats = sess.createCriteria(Cat.class)
-
+
Ordering the results @@ -146,7 +118,7 @@ List cats = sess.createCriteria(Cat.class)
-
+
Associations @@ -230,7 +202,7 @@ while ( iter.hasNext() ) {
-
+
Dynamic association fetching @@ -251,7 +223,7 @@ while ( iter.hasNext() ) {
-
+
Components @@ -275,7 +247,7 @@ while ( iter.hasNext() ) {
-
+
Collections When using criteria against collections, there are two distinct cases. One is if @@ -303,7 +275,7 @@ while ( iter.hasNext() ) {
-
+
Example queries @@ -348,7 +320,7 @@ List results = session.createCriteria(Cat.class)
-
+
Projections, aggregation and grouping The class org.hibernate.criterion.Projections is a @@ -442,7 +414,7 @@ List results = session.createCriteria(Cat.class)
-
+
Detached queries and subqueries The DetachedCriteria class allows you to create a query outside the scope @@ -505,7 +477,7 @@ session.createCriteria( Woman.class ) user objects - similar to setResultClass in JDO2. General use of ResultTransformer could also be explained. --> -
+
Queries by natural identifier diff --git a/documentation/src/main/docbook/manual/en-US/content/query_hql.xml b/documentation/src/main/docbook/manual/en-US/content/query_hql.xml index af85f4d390..e69d2b8f53 100644 --- a/documentation/src/main/docbook/manual/en-US/content/query_hql.xml +++ b/documentation/src/main/docbook/manual/en-US/content/query_hql.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + HQL: The Hibernate Query Language @@ -38,7 +10,7 @@ and understands notions like inheritance, polymorphism and association. -
+
Case Sensitivity @@ -59,7 +31,7 @@
-
+
The from clause @@ -107,7 +79,7 @@
-
+
Associations and joins @@ -219,7 +191,7 @@
-
+
Forms of join syntax @@ -241,7 +213,7 @@
-
+
Referring to identifier property @@ -280,7 +252,7 @@
-
+
The select clause @@ -357,7 +329,7 @@ from Cat cat]]>
-
+
Aggregate functions @@ -422,7 +394,7 @@ select count(distinct cat.name), count(cat) from Cat cat]]>
-
+
Polymorphic queries @@ -456,7 +428,7 @@ select count(distinct cat.name), count(cat) from Cat cat]]>
-
+
The where clause @@ -583,7 +555,7 @@ where log.item.class = 'Payment' and log.item.id = payment.id]]> -
+
Expressions @@ -876,7 +848,7 @@ WHERE prod.name = 'widget'
-
+
The order by clause @@ -892,7 +864,7 @@ order by cat.name asc, cat.weight desc, cat.birthdate]]>
-
+
The group by clause @@ -940,7 +912,7 @@ order by count(kitten) asc, sum(kitten.weight) desc]]>
-
+
Subqueries @@ -983,7 +955,7 @@ from Cat as cat]]>
-
+
HQL examples @@ -1106,7 +1078,7 @@ order by account.type.sortOrder, account.accountNumber, payment.dueDate]]> -
+
Bulk update and delete @@ -1116,7 +1088,7 @@ order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>
-
+
Tips & Tricks @@ -1196,7 +1168,7 @@ Collection counts = s.filter( collection, "select this.type, count(this) group b
-
+
Components @@ -1227,7 +1199,7 @@ Collection counts = s.filter( collection, "select this.type, count(this) group b
-
+
Row value constructor syntax diff --git a/documentation/src/main/docbook/manual/en-US/content/query_sql.xml b/documentation/src/main/docbook/manual/en-US/content/query_sql.xml index 7b6dcf70d4..dce2f947a3 100644 --- a/documentation/src/main/docbook/manual/en-US/content/query_sql.xml +++ b/documentation/src/main/docbook/manual/en-US/content/query_sql.xml @@ -1,33 +1,7 @@ - - -%BOOK_ENTITIES; -]> - + + + Native SQL You can also express queries in the native SQL dialect of your @@ -39,7 +13,7 @@ Hibernate3 allows you to specify handwritten SQL, including stored procedures, for all create, update, delete, and load operations. -
+
Using a <literal>SQLQuery</literal> Execution of native SQL queries is controlled via the @@ -250,7 +224,7 @@ List loggedCats = sess.createSQLQuery(sql) .addEntity("mother", Cat.class).list() -
+
Alias and property references In most cases the above alias injection is needed. For queries @@ -263,7 +237,7 @@ List loggedCats = sess.createSQLQuery(sql) simply examples; each alias will have a unique and probably different name when used. - +
Alias injection names @@ -418,7 +392,7 @@ List pusList = query.setString("name", "Pus%").list(); -
+
Named SQL queries Named SQL queries can also be defined in the mapping document and @@ -574,7 +548,7 @@ List pusList = query.setString("name", "Pus%").list(); . - + Named SQL query using <classname>@NamedNativeQuery</classname> together with <classname>@SqlResultSetMapping</classname> @@ -598,7 +572,7 @@ List pusList = query.setString("name", "Pus%").list(); - + Implicit result set mapping @Entity @@ -640,7 +614,7 @@ public class SpaceShip { } - + Using dot notation in @FieldResult for specifying associations @@ -771,7 +745,7 @@ public class SpaceShip { org.hibernate.callable which can be true or false depending on whether the query is a stored procedure or not. -
+
Using return-property to explicitly specify column/alias names @@ -824,7 +798,7 @@ public class SpaceShip { discriminator column.
-
+
Using stored procedures for querying Hibernate3 provides support for queries via stored procedures and @@ -869,7 +843,7 @@ BEGIN <return-join> and <load-collection> are not supported. -
+
Rules/limitations for using stored procedures You cannot use stored procedures with Hibernate unless you @@ -922,7 +896,7 @@ BEGIN
-
+
Custom SQL for create, update and delete Hibernate3 can use custom SQL for create, update, and delete @@ -932,7 +906,7 @@ BEGIN linkend="example-custom-crdu-via-annotations" /> shows how to define custom SQL operatons using annotations. - + Custom CRUD via annotations @Entity @@ -942,7 +916,7 @@ BEGIN @SQLDelete( sql="DELETE CHAOS WHERE id = ?") @SQLDeleteAll( sql="DELETE CHAOS") @Loader(namedQuery = "chaos") -@NamedNativeQuery(name="chaos", query="select id, size, name, lower( nickname ) as nickname from CHAOS where id= ?", resultClass = Chaos.class) +@NamedNativeQuery(name="chaos", query="select id, size, name, lower( nickname ) as nickname from CHAOS where xml:id= ?", resultClass = Chaos.class) public class Chaos { @Id private Long id; @@ -960,7 +934,7 @@ public class Chaos { <sql-delete> nodes. This can be seen in . - + Custom CRUD XML <class name="Person"> @@ -969,8 +943,8 @@ public class Chaos { </id> <property name="name" not-null="true"/> <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert> - <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update> - <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete> + <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE xml:id=?</sql-update> + <sql-delete>DELETE FROM PERSON WHERE xml:id=?</sql-delete> </class> @@ -1005,7 +979,7 @@ public class Chaos { to override the collection related statements -see . - + Overriding SQL statements for collections using annotations @@ -1081,7 +1055,7 @@ END updatePerson;
-
+
Custom SQL for loading You can also declare your own SQL (or HQL) queries for entity @@ -1094,7 +1068,7 @@ END updatePerson; <return alias="pers" class="Person" lock-mode="upgrade"/> SELECT NAME AS {pers.name}, ID AS {pers.id} FROM PERSON - WHERE ID=? + WHERE xml:id=? FOR UPDATE </sql-query> @@ -1137,7 +1111,7 @@ END updatePerson; FROM PERSON pers LEFT OUTER JOIN EMPLOYMENT emp ON pers.ID = emp.PERSON_ID - WHERE ID=? + WHERE xml:id=? </sql-query> The annotation equivalent <loader> is the diff --git a/documentation/src/main/docbook/manual/en-US/content/readonly.xml b/documentation/src/main/docbook/manual/en-US/content/readonly.xml index b2616de030..704c00b69e 100644 --- a/documentation/src/main/docbook/manual/en-US/content/readonly.xml +++ b/documentation/src/main/docbook/manual/en-US/content/readonly.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Read-only entities @@ -124,7 +96,7 @@ -
+
Making persistent entities read-only @@ -170,7 +142,7 @@ -
+
Entities of immutable classes @@ -192,7 +164,7 @@
-
+
Loading persistent entities as read-only @@ -279,7 +251,7 @@
-
+
Loading read-only entities from an HQL query/criteria @@ -380,7 +352,7 @@ session.close();
-
+
Making a persistent entity read-only @@ -434,7 +406,7 @@ s.flush();
-
+
Read-only affect on property type @@ -442,7 +414,7 @@ s.flush(); affected by making an entity read-only. -
+
Affect of read-only entity on property types @@ -532,7 +504,7 @@ s.flush(); is read-only, compared to when it is not read-only. -
+
Simple properties @@ -569,10 +541,10 @@ session.close();
-
+
Unidirectional associations -
+
Unidirectional one-to-one and many-to-one @@ -678,7 +650,7 @@ session.close();
-
+
Unidirectional one-to-many and many-to-many @@ -714,10 +686,10 @@ session.close();
-
+
Bidirectional associations -
+
Bidirectional one-to-one @@ -767,7 +739,7 @@ session.close();
-
+
Bidirectional one-to-many/many-to-one @@ -818,7 +790,7 @@ session.close();
-
+
Bidirectional many-to-many Hibernate treats bidirectional many-to-many diff --git a/documentation/src/main/docbook/manual/en-US/content/session_api.xml b/documentation/src/main/docbook/manual/en-US/content/session_api.xml index 30b19c997b..e4bd954924 100644 --- a/documentation/src/main/docbook/manual/en-US/content/session_api.xml +++ b/documentation/src/main/docbook/manual/en-US/content/session_api.xml @@ -1,33 +1,7 @@ - - -%BOOK_ENTITIES; -]> - + + + Working with objects Hibernate is a full object/relational mapping solution that not only @@ -43,7 +17,7 @@ Hibernate and is only relevant for the application developer when tuning the performance of the system. -
+
Hibernate object states Hibernate defines and supports the following object states: @@ -91,7 +65,7 @@ Hibernate methods that trigger a transition) in more detail.
-
+
Making objects persistent Newly instantiated instances of a persistent class are considered @@ -163,7 +137,7 @@ sess.save( pk, new Long(1234) ); chapter.
-
+
Loading an object The load() methods of Session @@ -231,7 +205,7 @@ sess.refresh(cat); //re-read the state (after the trigger executes).
-
+
Querying If you do not know the identifiers of the objects you are looking @@ -242,7 +216,7 @@ sess.refresh(cat); //re-read the state (after the trigger executes) -
+
Executing queries HQL and native SQL queries are represented with an instance of @@ -284,7 +258,7 @@ Set uniqueMothers = new HashSet(mothersWithKittens.list()); objects, but with their collections initialized. You can filter these duplicates through a Set. -
+
Iterating results Occasionally, you might be able to achieve better performance by @@ -312,7 +286,7 @@ while ( iter.hasNext() ) { }
-
+
Queries that return tuples Hibernate queries sometimes return tuples of objects. Each tuple @@ -331,7 +305,7 @@ while ( kittensAndMothers.hasNext() ) { }
-
+
Scalar results Queries can specify a property of a class in the @@ -354,7 +328,7 @@ while ( results.hasNext() ) { }
-
+
Bind parameters Methods on Query are provided for binding @@ -398,7 +372,7 @@ q.setParameterList("namesList", names); List cats = q.list();
-
+
Pagination If you need to specify bounds upon your result set, that is, the @@ -415,7 +389,7 @@ List cats = q.list(); native SQL of your DBMS.
-
+
Scrollable iteration If your JDBC driver supports scrollable @@ -451,7 +425,7 @@ cats.close() if you need offline pagination functionality.
-
+
Externalizing named queries Queries can also be configured as so called named queries using @@ -463,7 +437,7 @@ cats.close() scope. A named query is defined by its name and the actual query string. - + Defining a named query using <classname>@NamedQuery</classname> @@ -503,7 +477,7 @@ public class MyDao { Parameter binding and executing is done programatically as seen in . - + Parameter binding of a named query Query q = sess.getNamedQuery("ByNameAndMaximumWeight"); @@ -526,7 +500,7 @@ List cats = q.list();
-
+
Filtering collections A collection filter is a special type of @@ -564,7 +538,7 @@ List cats = q.list(); .list();
-
+
Criteria queries HQL is extremely powerful, but some developers prefer to build @@ -582,7 +556,7 @@ List cats = crit.list(); linkend="querycriteria" />.
-
+
Queries in native SQL You can express a query in SQL, using @@ -609,7 +583,7 @@ List cats = crit.list();
-
+
Modifying persistent objects Transactional persistent instances (i.e. @@ -635,7 +609,7 @@ sess.flush(); // changes to cat are automatically detected and persisted -
+
Modifying detached objects Many applications need to retrieve an object in one transaction, @@ -699,7 +673,7 @@ sess.lock(pk, LockMode.UPGRADE); linkend="transactions-optimistic" />.
-
+
Automatic state detection Hibernate users have requested a general purpose method that either @@ -815,7 +789,7 @@ secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)
-
+
Deleting persistent objects Session.delete() will remove an object's state @@ -832,7 +806,7 @@ secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id) children.
-
+
Replicating object between two different datastores It is sometimes useful to be able to take a graph of persistent @@ -887,7 +861,7 @@ session2.close(); transactions and more.
-
+
Flushing the Session Sometimes the Session will execute the SQL @@ -982,7 +956,7 @@ sess.close(); .
-
+
Transitive persistence It is quite cumbersome to save, delete, or reattach individual @@ -1084,7 +1058,7 @@ sess.close(); association, this associated entity can be marked for deletion if orphanRemoval is set to true. - + <literal>@OneToMany</literal> with <literal>orphanRemoval</literal> @@ -1123,8 +1097,9 @@ customer.getOrders().remove(order); //order will be deleted by cascadeIf the child object's lifespan is bounded by the lifespan of the parent object, make it a life cycle object by specifying - cascade="all,delete-orphan"(@OneToMany(cascade=CascadeType.ALL, - orphanRemoval=true)). + cascade="all,delete-orphan" (@OneToMany(cascade=CascadeType.ALL, + orphanRemoval=true)). + @@ -1197,7 +1172,7 @@ customer.getOrders().remove(order); //order will be deleted by cascadeSession.
-
+
Using metadata Hibernate requires a rich meta-level model of all entity and value diff --git a/documentation/src/main/docbook/manual/en-US/content/toolset_guide.xml b/documentation/src/main/docbook/manual/en-US/content/toolset_guide.xml index b8d28b2469..b01f453117 100644 --- a/documentation/src/main/docbook/manual/en-US/content/toolset_guide.xml +++ b/documentation/src/main/docbook/manual/en-US/content/toolset_guide.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Toolset Guide @@ -79,7 +51,7 @@ be used from "inside" Hibernate. -
+
Automatic schema generation @@ -99,7 +71,7 @@ First, you must customize your mapping files to improve the generated schema. The next section covers schema customization. -
+
Customizing the schema @@ -199,7 +171,7 @@ The following table summarizes these optional attributes. -
+
Summary @@ -310,7 +282,7 @@ -
+
Running the tool @@ -390,7 +362,7 @@ new SchemaExport(cfg).create(false, true);]]>
-
+
Properties @@ -451,7 +423,7 @@ new SchemaExport(cfg).create(false, true);]]>
-
+
Using Ant @@ -478,7 +450,7 @@ new SchemaExport(cfg).create(false, true);]]>
-
+
Incremental schema updates @@ -537,7 +509,7 @@ new SchemaUpdate(cfg).execute(false);]]>
-
+
Using Ant for incremental schema updates @@ -560,7 +532,7 @@ new SchemaUpdate(cfg).execute(false);]]>
-
+
Schema validation @@ -612,7 +584,7 @@ new SchemaValidator(cfg).validate();]]>
-
+
Using Ant for schema validation diff --git a/documentation/src/main/docbook/manual/en-US/content/transactions.xml b/documentation/src/main/docbook/manual/en-US/content/transactions.xml index e2f11d7479..9e05f8ca11 100644 --- a/documentation/src/main/docbook/manual/en-US/content/transactions.xml +++ b/documentation/src/main/docbook/manual/en-US/content/transactions.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + Transactions and Concurrency @@ -60,7 +32,7 @@ Session, as well as database transactions and long conversations. -
+
Session and transaction scopes @@ -92,7 +64,7 @@ database transaction boundaries? These questions are addressed in the following sections. -
+
Unit of work @@ -173,7 +145,7 @@
-
+
Long conversations @@ -267,7 +239,7 @@
-
+
Considering object identity @@ -334,7 +306,7 @@
-
+
Common issues @@ -386,7 +358,7 @@
-
+
Database transaction demarcation @@ -451,7 +423,7 @@ -
+
Non-managed environment @@ -526,7 +498,7 @@ catch (RuntimeException e) {
-
+
Using JTA @@ -629,7 +601,7 @@ catch (RuntimeException e) {
-
+
Exception handling @@ -704,7 +676,7 @@ catch (RuntimeException e) {
-
+
Transaction timeout @@ -749,7 +721,7 @@ finally {
-
+
Optimistic concurrency control @@ -762,7 +734,7 @@ finally { also has the benefit of preventing lost updates in single database transactions. -
+
Application version checking @@ -811,7 +783,7 @@ session.close();]]>
-
+
Extended session and automatic versioning @@ -889,7 +861,7 @@ session.close(); // Only for last transaction in conversation]]> -
+
Detached objects and automatic versioning @@ -921,7 +893,7 @@ session.close();]]>
-
+
Customizing automatic versioning @@ -966,7 +938,7 @@ session.close();]]>
-
+
Pessimistic locking @@ -1068,7 +1040,7 @@ session.close();]]>
-
+
Connection release modes diff --git a/documentation/src/main/docbook/manual/en-US/content/tutorial.xml b/documentation/src/main/docbook/manual/en-US/content/tutorial.xml index f5048307da..e1214682e7 100644 --- a/documentation/src/main/docbook/manual/en-US/content/tutorial.xml +++ b/documentation/src/main/docbook/manual/en-US/content/tutorial.xml @@ -1,36 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - - + Tutorial @@ -58,7 +29,7 @@ -
+
Part 1 - The first Hibernate Application @@ -69,20 +40,22 @@ Although you can use whatever database you feel comfortable using, we - will use HSQLDB (an in-memory, - Java database) to avoid describing installation/setup of any particular + will use HSQLDB + (an in-memory, Java database) to avoid describing installation/setup of any particular database servers. -
+
Setup 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 Maven. Maven, in particular, has a - good resource describing this layout. + as Maven. + Maven, in particular, has a + good resource describing this + layout. As this tutorial is to be a web application, we will be creating and making use of src/main/java, src/main/resources and src/main/webapp directories. @@ -142,7 +115,8 @@ It is not a requirement to use Maven. If you wish to use something else to build this tutorial (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 Ivy + dependencies. If you use something like + Ivy providing transitive dependency management you would still use the dependencies mentioned below. Otherwise, you'd need to grab all dependencies, both explicit and transitive, and add them to the project's @@ -161,7 +135,7 @@
-
+
The first class @@ -243,7 +217,7 @@ public class Event {
-
+
The mapping file @@ -419,7 +393,7 @@ public class Event {
-
+
Hibernate configuration @@ -450,9 +424,10 @@ public class Event { how to obtain connections. For this tutorial we will be using a standalone connection pool (as opposed to a javax.sql.DataSource). Hibernate comes with support for two third-party open source JDBC connection pools: - c3p0 and - proxool. However, we will be using the - Hibernate built-in connection pool for this tutorial. + c3p0 + and + proxool. + However, we will be using the Hibernate built-in connection pool for this tutorial. @@ -547,13 +522,13 @@ public class Event {
-
+
Building with Maven We will now build the tutorial with Maven. You will need to have Maven installed; it is available from the - Maven download page. + Maven download page. Maven will read the /pom.xml file we created earlier and know how to perform some basic project tasks. First, lets run the compile goal to make sure we can compile @@ -580,7 +555,7 @@ public class Event {
-
+
Startup and helpers @@ -670,7 +645,7 @@ public class HibernateUtil {
-
+
Loading and storing objects @@ -722,11 +697,11 @@ public class EventManager { - A org.hibernate.Session is designed to + A org.hibernate.Session is designed to represent a single unit of work (a single atomic piece of work to be performed). For now we will keep things simple and assume a one-to-one granularity between a Hibernate - org.hibernate.Session and a database + org.hibernate.Session and a database transaction. To shield our code from the actual underlying transaction system we use the Hibernate org.hibernate.Transaction API. @@ -758,28 +733,28 @@ public class EventManager { - A org.hibernate.Session begins when the + A org.hibernate.Session begins when the first call to getCurrentSession() 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 - org.hibernate.Session from the thread + org.hibernate.Session from the thread and closes it for you. If you call getCurrentSession() again, you get a new - org.hibernate.Session and can start a + org.hibernate.Session and can start a new unit of work. Related to the unit of work scope, should the Hibernate - org.hibernate.Session be used to execute + org.hibernate.Session be used to execute one or several database operations? The above example uses one - org.hibernate.Session for one operation. + org.hibernate.Session 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 - org.hibernate.Session is flexible but you + org.hibernate.Session is flexible but you should never design your application to use a new Hibernate - org.hibernate.Session for + org.hibernate.Session for every database operation. Even though it is used in the following examples, consider session-per-operation an anti-pattern. @@ -862,7 +837,7 @@ public class EventManager {
-
+
Part 2 - Mapping associations @@ -872,7 +847,7 @@ public class EventManager { which they participate. -
+
Mapping the Person class @@ -933,7 +908,7 @@ public class Person {
-
+
A unidirectional Set-based association @@ -1024,7 +999,7 @@ public class Person {
-
+
Working the association @@ -1145,7 +1120,7 @@ public class Person {
-
+
Collection of values @@ -1237,7 +1212,7 @@ public class Person {
-
+
Bi-directional associations @@ -1296,7 +1271,7 @@ public class Person {
-
+
Working bi-directional links @@ -1354,7 +1329,7 @@ public class Person {
-
+
Part 3 - The EventManager web application @@ -1364,7 +1339,7 @@ public class Person { database, and it provides an HTML form to enter new events. -
+
Writing the basic servlet @@ -1446,7 +1421,7 @@ public class EventManagerServlet extends HttpServlet {
-
+
Processing and rendering @@ -1556,7 +1531,7 @@ public class EventManagerServlet extends HttpServlet {
-
+
Deploying and testing @@ -1591,7 +1566,8 @@ public class EventManagerServlet extends HttpServlet { If you do not have Tomcat installed, download it from - and follow the + + and follow the installation instructions. Our application requires no changes to the standard Tomcat configuration. @@ -1609,13 +1585,13 @@ public class EventManagerServlet extends HttpServlet {
-
+
Summary This tutorial covered the basics of writing a simple standalone Hibernate application and a small web application. More tutorials are available from the Hibernate - website. + website.
diff --git a/documentation/src/main/docbook/manual/en-US/content/type.xml b/documentation/src/main/docbook/manual/en-US/content/type.xml index fd05981fbe..9836fd0d1d 100644 --- a/documentation/src/main/docbook/manual/en-US/content/type.xml +++ b/documentation/src/main/docbook/manual/en-US/content/type.xml @@ -1,29 +1,6 @@ - - + - + Types @@ -52,7 +29,7 @@ entity types (see ). -
+
Value types @@ -63,7 +40,7 @@ amd collection types (see ). -
+
Basic value types The norm for basic value types is that they map a single database value (column) to a single, @@ -72,7 +49,7 @@ JDBC specification. We will later cover how to override these mapping and how to provide and use alternative type mappings. -
+
java.lang.String @@ -114,7 +91,7 @@
-
+
<classname>java.lang.Character</classname> (or char primitive) @@ -131,7 +108,7 @@
-
+
<classname>java.lang.Boolean</classname> (or boolean primitive) @@ -184,7 +161,7 @@
-
+
<classname>java.lang.Byte</classname> (or byte primitive) @@ -201,7 +178,7 @@
-
+
<classname>java.lang.Short</classname> (or short primitive) @@ -218,7 +195,7 @@
-
+
<classname>java.lang.Integer</classname> (or int primitive) @@ -235,7 +212,7 @@
-
+
<classname>java.lang.Long</classname> (or long primitive) @@ -252,7 +229,7 @@
-
+
<classname>java.lang.Float</classname> (or float primitive) @@ -269,7 +246,7 @@
-
+
<classname>java.lang.Double</classname> (or double primitive) @@ -286,7 +263,7 @@
-
+
<classname>java.math.BigInteger</classname> @@ -303,7 +280,7 @@
-
+
<classname>java.math.BigDecimal</classname> @@ -320,7 +297,7 @@
-
+
<classname>java.util.Date</classname> or <classname>java.sql.Timestamp</classname> @@ -337,7 +314,7 @@
-
+
<classname>java.sql.Time</classname> @@ -354,7 +331,7 @@
-
+
<classname>java.sql.Date</classname> @@ -371,7 +348,7 @@
-
+
<classname>java.util.Calendar</classname> @@ -401,7 +378,7 @@
-
+
<classname>java.util.Currency</classname> @@ -418,7 +395,7 @@
-
+
<classname>java.util.Locale</classname> @@ -435,7 +412,7 @@
-
+
<classname>java.util.TimeZone</classname> @@ -452,7 +429,7 @@
-
+
<classname>java.net.URL</classname> @@ -469,7 +446,7 @@
-
+
<classname>java.lang.Class</classname> @@ -486,7 +463,7 @@
-
+
<classname>java.sql.Blob</classname> @@ -503,7 +480,7 @@
-
+
<classname>java.sql.Clob</classname> @@ -520,7 +497,7 @@
-
+
byte[] @@ -561,7 +538,7 @@
-
+
Byte[] @@ -578,7 +555,7 @@
-
+
char[] @@ -595,7 +572,7 @@
-
+
Character[] @@ -612,7 +589,7 @@
-
+
<classname>java.util.UUID</classname> @@ -654,7 +631,7 @@
-
+
<interfacename>java.io.Serializable</interfacename> @@ -675,7 +652,7 @@
-
+
Composite types @@ -695,7 +672,7 @@
-
+
Collection types @@ -711,7 +688,7 @@
-
+
Entity types The definition of entities is covered in detail in . For the purpose of @@ -730,7 +707,7 @@
-
+
Significance of type categories Why do we spend so much time categorizing the various types of types? What is the significance of the @@ -753,7 +730,7 @@
-
+
Custom types Hibernate makes it relatively easy for developers to create their own value types. For @@ -769,7 +746,7 @@ and java.util.Currency together into a custom Money class. -
+
Custom types using <interfacename>org.hibernate.type.Type</interfacename> The first approach is to directly implement the org.hibernate.type.Type @@ -781,7 +758,7 @@ Money, which is the key we would use to register our type in the registry: - + Defining and registering the custom Type
-
+
Custom types using <interfacename>org.hibernate.usertype.UserType</interfacename> @@ -859,7 +836,7 @@ cfg...; interface. Using a org.hibernate.usertype.UserType, our Money custom type would look as follows: - + Defining the custom UserType
-
+
Custom types using <interfacename>org.hibernate.usertype.CompositeUserType</interfacename> The third and final approach is the use the org.hibernate.usertype.CompositeUserType @@ -918,7 +895,7 @@ cfg...; Money custom type would look as follows: - + Defining the custom CompositeUserType -
+
Type registry Internally Hibernate uses a registry of basic types (see ) when @@ -1016,7 +993,7 @@ cfg...; class when bootstrapping Hibernate. For example, lets say you want Hibernate to use your custom SuperDuperStringType; during bootstrap you would call: - + Overriding the standard <classname>StringType</classname> diff --git a/documentation/src/main/docbook/manual/en-US/content/xml.xml b/documentation/src/main/docbook/manual/en-US/content/xml.xml index 37facd5b88..5fbb1852e2 100755 --- a/documentation/src/main/docbook/manual/en-US/content/xml.xml +++ b/documentation/src/main/docbook/manual/en-US/content/xml.xml @@ -1,35 +1,7 @@ - + - -%BOOK_ENTITIES; - -]> - - + XML Mapping @@ -37,7 +9,7 @@ active development. -
+
Working with XML data @@ -68,7 +40,7 @@ it can be used to map just the XML. -
+
Specifying XML and class mapping together @@ -97,7 +69,7 @@ ]]>
-
+
Specifying only an XML mapping @@ -138,7 +110,7 @@
-
+
XML mapping metadata @@ -227,7 +199,7 @@ would return datasets such as this: - + 987632567 985612323 @@ -243,13 +215,13 @@ mapping, the data might look more like this: - - - + + + 100.29 - - + + -2370.34 @@ -263,7 +235,7 @@
-
+
Manipulating XML data diff --git a/documentation/src/main/docbook/quickstart/en-US/Author_Group.xml b/documentation/src/main/docbook/quickstart/en-US/Author_Group.xml index a181dab081..77d800c8ec 100644 --- a/documentation/src/main/docbook/quickstart/en-US/Author_Group.xml +++ b/documentation/src/main/docbook/quickstart/en-US/Author_Group.xml @@ -1,43 +1,52 @@ - -%BOOK_ENTITIES; -]> - - + - Gavin - King + + Gavin + King + - Christian - Bauer + + Christian + Bauer + - Emmanuel - Bernard + + Steve + Ebersole + - Steve - Ebersole + + Emmanuel + Bernard + + + + + Adam + Warski + - - Adam - Warski - - James - Cobb + + James + Cobb + Graphic Design - Cheyenne - Weaver + + Cheyenne + Weaver + Graphic Design diff --git a/documentation/src/main/docbook/quickstart/en-US/Book_Info.xml b/documentation/src/main/docbook/quickstart/en-US/Book_Info.xml deleted file mode 100644 index 154ba609db..0000000000 --- a/documentation/src/main/docbook/quickstart/en-US/Book_Info.xml +++ /dev/null @@ -1,29 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - Hibernate Getting Started Guide - &version; - 1.0 - 1 - JBoss Hibernate Core - &version; - &today; - 1 - - - - - - - - - - ©rightYear; - ©rightHolder; - - - diff --git a/documentation/src/main/docbook/quickstart/en-US/Hibernate_Getting_Started_Guide.xml b/documentation/src/main/docbook/quickstart/en-US/Hibernate_Getting_Started_Guide.xml index aaedbdc3fc..5ec1c53713 100644 --- a/documentation/src/main/docbook/quickstart/en-US/Hibernate_Getting_Started_Guide.xml +++ b/documentation/src/main/docbook/quickstart/en-US/Hibernate_Getting_Started_Guide.xml @@ -1,11 +1,33 @@ - - %BOOK_ENTITIES; + +%BOOK_ENTITIES; ]> - + + Hibernate Getting Started Guide + &version; + 1.0 + JBoss Hibernate Core + &version; + &today; + 1 + + + + + + + + + + ©rightYear; + ©rightHolder; + + + + diff --git a/documentation/src/main/docbook/quickstart/en-US/content/obtaining.xml b/documentation/src/main/docbook/quickstart/en-US/content/obtaining.xml index 9ef871dd52..29add36279 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/obtaining.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/obtaining.xml @@ -1,11 +1,9 @@ - - - + Obtaining Hibernate -
+
Release Bundle Downloads The Hibernate team provides release bundles hosted on the SourceForge File Release System, in @@ -17,7 +15,7 @@ You can download releases of Hibernate, in your chosen format, from the list at - . + . @@ -31,7 +29,7 @@ The /lib/jpa/ directory contains the hibernate-entitymanager jar and its dependencies beyond those in lib/required/. This defines Hibernate support for - JPA. + JPA. @@ -49,7 +47,7 @@
-
+
Maven Repository Artifacts @@ -60,18 +58,18 @@ Maven Repository Wiki Pages - - General information about the repository. + - General information about the repository. - - Information about setting up the JBoss + - Information about setting up the JBoss repositories in order to do development work on JBoss projects themselves. - - Information about setting up access to + - Information about setting up access to the repository to use JBoss projects as part of your own software. @@ -99,7 +97,7 @@ Represents Hibernate's implementation of JPA, as specified at - . + . This artifact depends on hibernate-core @@ -123,7 +121,7 @@ Provides integration between Hibernate and the C3P0 connection - pool library. See for information + pool library. See for information about C3P0. @@ -138,7 +136,7 @@ Provides integration between Hibernate and the Proxool connection - pool library. See for more information about + pool library. See for more information about this library. @@ -153,7 +151,7 @@ Privides integration between Hibernate and EhCache, as a - second-level cache. See for more + second-level cache. See for more information aboutEhCache. @@ -168,7 +166,7 @@ Provides integration between Hibernate and Infinispan, as a - second-level cache. See for more information + second-level cache. See for more information about Infinispan. diff --git a/documentation/src/main/docbook/quickstart/en-US/content/preface.xml b/documentation/src/main/docbook/quickstart/en-US/content/preface.xml index 9df3a545bc..df2f0be01b 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/preface.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/preface.xml @@ -1,49 +1,15 @@ - - -%BOOK_ENTITIES; - -]> - - + Preface - - Working with both Object-Oriented software and Relational Databases can be cumbersome and time consuming. Development costs are significantly higher due to a paradigm mismatch between how data is represented in objects versus relational databases. Hibernate is an Object/Relational Mapping solution for Java environments. The term Object/Relational Mapping refers to the technique of mapping data between an object model representation to - a relational data model representation. See for a good high-level discussion. + a relational data model representation. See + for a good high-level discussion. @@ -56,12 +22,12 @@ Data Modeling Resources - + - + @@ -91,19 +57,19 @@ Use Hibernate and report any bugs or issues you find. See - for details. + for details. Try your hand at fixing some bugs or implementing enhancements. Again, see - . + . Engage with the community using mailing lists, forums, IRC, or other ways listed at - . + . @@ -125,7 +91,7 @@ Tutorial code The referenced projects and code for the tutorials in this guide are available at - . + .
diff --git a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_annotations.xml b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_annotations.xml index be6e43a159..0a551a950c 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_annotations.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_annotations.xml @@ -1,7 +1,6 @@ - - + Tutorial Using Native Hibernate APIs and Annotation Mappings @@ -22,7 +21,7 @@ -
+
The Hibernate configuration file @@ -32,7 +31,7 @@
-
+
The annotated entity Java class The entity class in this tutorial is org.hibernate.tutorial.annotations.Event which @@ -41,7 +40,7 @@ rather than a separate hbm.xml file. - + Identifying the class as an entity @Entity @Table( name = "EVENTS" ) @@ -60,7 +59,7 @@ public class Event { literal value, not a table as a table --> - + Identifying the identifier property @Id @GeneratedValue(generator="increment") @@ -78,7 +77,7 @@ public Long getId() { strategy for this entity's identifier values. - + Identifying basic properties public String getTitle() { return title; @@ -97,7 +96,7 @@ public Date getDate() {
-
+
Example code org.hibernate.tutorial.annotations.AnnotationsIllustrationTest is essentially the @@ -106,7 +105,7 @@ public Date getDate() {
-
+
Take it further! Practice Exercises diff --git a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_envers.xml b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_envers.xml index 96903c1c74..1885d3f535 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_envers.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_envers.xml @@ -1,7 +1,6 @@ - - + Tutorial Using Envers @@ -21,7 +20,7 @@ -
+
<filename>persistence.xml</filename> This file was discussed in the JPA tutorial in
-
+
The annotated entity Java class Again, the entity is largely the same as in . The major @@ -38,14 +37,14 @@
-
+
Example code Again, this tutorial makes use of the JPA APIs. However, the code also makes a change to one of the entities, then uses the Envers API to pull back the initial revision as well as the updated revision. A revision refers to a version of an entity. - + Using the <interfacename>org.hibernate.envers.AuditReader</interfacename> public void testBasicUsage() { ... @@ -75,7 +74,7 @@
-
+
Take it further! Practice Exercises diff --git a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_jpa.xml b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_jpa.xml index a2a566b2bd..4d5cf73727 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_jpa.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_jpa.xml @@ -1,7 +1,6 @@ - - + Tutorial Using the <firstterm><phrase>Java Persistence API (JPA)</phrase></firstterm> @@ -21,7 +20,7 @@ -
+
<filename>persistence.xml</filename> @@ -34,7 +33,7 @@ by classpath lookup of the META-INF/persistence.xml resource name. - + <filename>persistence.xml</filename>
-
+
The annotated entity Java class The entity is exactly the same as in
-
+
Example code The previous tutorials used the Hibernate APIs. This tutorial uses the JPA APIs. - + Obtaining the <interfacename>javax.persistence.EntityManagerFactory</interfacename> protected void setUp() throws Exception { entityManagerFactory = Persistence.createEntityManagerFactory( "org.hibernate.tutorial.jpa" ); @@ -90,7 +89,7 @@ - + Saving (persisting) entities EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); @@ -107,7 +106,7 @@ entityManager.close(); operation persist instead of save. - + Obtaining a list of entities
-
+
Take it further! Practice Exercises diff --git a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_native.xml b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_native.xml index b0714781d6..feac1f7662 100644 --- a/documentation/src/main/docbook/quickstart/en-US/content/tutorial_native.xml +++ b/documentation/src/main/docbook/quickstart/en-US/content/tutorial_native.xml @@ -1,7 +1,6 @@ - - + Tutorial Using Native Hibernate APIs and <phrase>hbm.xml</phrase> Mappings @@ -22,7 +21,7 @@ -
+
The Hibernate configuration file @@ -74,7 +73,7 @@
-
+
The entity Java class The entity class for this tutorial is org.hibernate.tutorial.hbm.Event. @@ -99,7 +98,7 @@
-
+
The mapping file The hbm.xml mapping file for this tutorial is the classpath resource @@ -112,7 +111,7 @@ Hibernate mapping file is one choice for providing Hibernate with this metadata. - + The <literal>class</literal> mapping element ... @@ -141,7 +140,7 @@ EVENTS table. - + The <literal>id</literal> mapping element ... @@ -175,7 +174,7 @@ incrementing count. - + The <literal>property</literal> mapping element ]]> @@ -219,7 +218,7 @@
-
+
Example code The org.hibernate.tutorial.hbm.NativeApiIllustrationTest class illustrates using @@ -234,7 +233,7 @@ - + Obtaining the <interfacename>org.hibernate.SessionFactory</interfacename> protected void setUp() throws Exception { // A SessionFactory is set up once for an application @@ -280,7 +279,7 @@ - + Saving entities Session session = sessionFactory.openSession(); session.beginTransaction(); @@ -296,7 +295,7 @@ session.close(); takes responsibility to perform an INSERT on the database. - + Obtaining a list of entities
-
+
Take it further! Practice Exercises diff --git a/documentation/src/main/style/css/css/hibernate-eclipse.css b/documentation/src/main/style/css/css/hibernate-eclipse.css new file mode 100644 index 0000000000..25a5b9aae9 --- /dev/null +++ b/documentation/src/main/style/css/css/hibernate-eclipse.css @@ -0,0 +1,3 @@ +@import url("hibernate.css"); + +body {background-image:none;} diff --git a/documentation/src/main/style/css/css/hibernate-single.css b/documentation/src/main/style/css/css/hibernate-single.css new file mode 100644 index 0000000000..7b24266b99 --- /dev/null +++ b/documentation/src/main/style/css/css/hibernate-single.css @@ -0,0 +1,3 @@ +@import url("hibernate.css"); + +.title {margin-top:30px;} diff --git a/documentation/src/main/style/css/css/hibernate.css b/documentation/src/main/style/css/css/hibernate.css new file mode 100644 index 0000000000..d7f43026df --- /dev/null +++ b/documentation/src/main/style/css/css/hibernate.css @@ -0,0 +1,94 @@ +@import url("jbossorg.css"); + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +/* work around problems in the jboss.org styles wrt html & jHighLight */ +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +pre { + font-family:Monaco,monospace; + line-height: 1.29em; +} + +pre br { + display:none; +} + +pre.JAVA { + line-height: 1.29em; +} + +pre.XML { + line-height: 1.29em; +} + +pre.JSP { + line-height: 1.29em; +} + +pre.XHTML { + line-height: 1.29em; +} +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +body{ + background-image:url(../images/org/hibernate/bkg_gradient.png); + font-family:'Lucida Grande', Geneva, Verdana, Arial, sans-serif; +} + +a{ + text-decoration:none; +} + +h1{ + background-image:url(../images/org/hibernate/title_hdr.png); + color:#182737; +} + +h2,h3,h4,h5,h6{ + color:#4a5d75; +} + +#title a.site_href { + display:block; + height:100px; + width:362px; + float:left; + background:url(../images/org/hibernate/hibernatelogo.png) top left no-repeat; +} + +#title a.doc_href { + display:block; + height:100px; + background:transparent url(../images/org/hibernate/community_doc.png) top right no-repeat; +} + +.releaseinfo { + color:#4a5d75; + font-size:150%; +} + +div.note { + background-color:#849092; + color:white; +} + +div.note h2 {color:white;} + +div.note a:visited, div.tip a:visited, div.important a:visited, div.caution a:visited, div.warning a:visited, div.note a:link, div.tip a:link, div.important a:link, div.caution a:link, div.warning a:link { + color: #f7f2d0; +} + +.docnav li.next a strong {background-image:url(../images/org/hibernate/docbook/next.png);} +.docnav li.previous a strong {background-image:url(../images/org/hibernate/docbook/prev.png);} +.docnav li.home a strong {background-image:url(../images/org/hibernate/docbook/home.png);} +.docnav li.up a strong {background-image:url(../images/org/hibernate/docbook/up.png);} + +/* Eclipse Help Navigation */ +.navheader td.next a {background-image:url(../images/org/hibernate/docbook/next.png);} +.navheader td.previous a {background-image:url(../images/org/hibernate/docbook/prev.png);} + +.navfooter td.next a {background-image:url(../images/org/hibernate/docbook/next.png);} +.navfooter td.previous a {background-image:url(../images/org/hibernate/docbook/prev.png);} +.navfooter td.home a {background-image:url(../images/org/hibernate/docbook/home.png);} +.navfooter td.up a {background-image:url(../images/org/hibernate/docbook/up.png);} + + diff --git a/documentation/src/main/style/images/images/org/hibernate/bkg_gradient.png b/documentation/src/main/style/images/images/org/hibernate/bkg_gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..48365edf0603840faf32628bb7e8542c8c6c9c31 GIT binary patch literal 2904 zcmV-e3#asnP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001kNkl9fm98R(WJS4_c{p)360hhbwd&oQdQ#oB^3oR z?nqF6Ck}VKHJ*DLx!HO9!93w4szgezRR$#GbBIhJs3MaL?F($wwqz4=ZN77f3H9=;_P6pO7EC0 ztCMDb?$)E5%m7vT)3!?yjuP?_6?%2o--dFu^~6a~HZUDXO!*>_I*Gujmr|-ARV2`J z18|4&9u?23PND=+b_1yY7xq>G{vaKC^_FyCHgTD}FEW<;79h!suNy^_{&xRKH@+wQ zPv`;vRH#ERZU2@y{Z}$g%Lq_i@&)S<3)Cyqfi_5@WH|@{s3sDPRF_7nCHaUMqJLF4 zJs@d&Q~V#7e^`@1DoQi^tQwe{|iiQo&Dw=HhRr}0{zbG3)GJpL0m6%svV{tTDNuOcIWszP#&N+{`J>jfhXqT#x4)hB#q_s`8V|4JyIrr#=}jtV8CMUKOm1?4 zRDxVPxWVcnr`Ww2I`tA-&C*>b(el5q3V5_uY2=K~q6&C6rh@zuW3)CR6vX*B@+1OMsTZI~h5V-2M69SH z>)kz>by71@s8zp&p8bGX9y@S@EF|H{)Ie(&K*axO;}Qb;zB;@b=*Gq$ch#-(@kqvH zSS=-TveIIhF~Z*Rjqc^fSV?*o^f9=-5NUC7RhhXI|3{p5R`t3Z-zG_B^6QF#ZL+C4 z^2xU@%BMRPl+6P#K%-px&#QM_mS@D+l#IQ%+@&klL)=j2(nig#>APu>+Yf}p&X=C8 zBP4?7CEbd~%H0RPYFKY9x5ai*x+=>(J6`dr#NZ*9Y>$aE1}~89_RFa0eB8k}BfZ37YRuA{pfoMe zlK5@xiwp07T+wKkX81FHTOOJLLX#mT=ePZ@zaPd=zdhu+Zz) zo`X1FS_I{G_E&P2nb+Sk5#+;8r77!FemeNFQQg#(dN;UR0X{j0h<6_e+>V)VqX=K` z7l*BRXPxkaIDJ>Hm~vVGevl|sR5Kw*S|?!8&Ql#M7G zH^@BO?0y`Fi=~n^>h(gpd<&_1di0ppeSVVylw#HFLk6F_w~Kbk7f?evOu=uU`6$r7 zhMP)=pjptup=sGKUofcu1C0+27wE~lwZ6NMK2%Fj(bFw2_JjZK-iQ(h6xeC0^drrx zH&!wr(e9TyKAB_9^`bh4l_&0Rw7sSA*^gBfg(nchFE=>uCFCY|(}KAIzc`mvt(Qg9 zc=p0E2{jm>8~9Ke;qr%;US=x4I<%_A#9ddI-I~2ClU*Bn%s=(N8Pxr&RC3O|_vs+p zu;tWKp-)=p?7`60N}WV^^OJQ(^jj@?uYn7dZ-2h<%_+9pN8a7H&8T=d!;*q^=!3tF zcIY8jIZo)&=+4r6#bV<;89T#o4pF42=jY^)7id2+EuWyrC(lGEx;+ePlBwnBqoz4Y z5NOo7BMppE>{7J&xyM?N*?A$HXCIhlaD1(FKQ%)5(GhvAM*s3PM(Hf*$4ATlQWRpa zb`;=5{xQVY#rt!p*POn?@r+0IH{N*t9CinMNU!*0lt%BY!PC}IS{Uw_;MF8pHpKi> z71txXdSJYE&pmZ@3}aQsCy})=Tw)(Hu}|oT&&DD)Q4YjI08Q(Kt+h%l0MWa>s;|!W zoIDDo_j2BgsBp#125H_2@|!@*n_Wh>ZHc8>N$cDp^Io|MY9W-Ha}=Kyu#|C!o<*>3 zuR4-fRaOd$@Uh~!@H07mge5^Ibb=cDRCHL!?IcRs!PyMJ;P2Z`wO#Sy$>I+!gsLv^dsKaZ#1i?lf5xpj58 zTtbIc2AntLBxF~(gyFN7^kvXnmgX;j6VFJ`x<^H(8nZItbc}c z+>;7k%?J<7PVhM=DT$QK+w}$8-NiRpn7+x?z=MawuZ|RoAkCrEyb&~_2li^#iivEV zFhUGv?k@fc8aQ~e_92gRd6evN%-6Lpk>N)OI&X63Rj*fIzwp29~!lya<~-piH}hW`^_4A!1%T z_8=T3j^*_yw&fZPFr#YY`3tT-%dGV-WmInyZol666q6S5#y4<0!zPRG>8%jTBRKfc zm{`L;`C*<8v?gWyon&F1L|BJLg5csh!>_NM{gJ?D%p%YwW2A1G9)(2Pvv3p*Nl#~)8a-XJp|C! z3p4WvLNH9H25a<)aB9Dy6=?SQB~JNW}_K* zGd6IL_We@4Hp{b(P4?XENmj=~r^|CRrc?CCR)WivuYZ5-kEQjwk`fG=r_bFP*HMXZ zrGk|YA~y1y?aOs8l!)O=6D+4W?b;x8)!>j9UFJe}*xxMc#*blL&dR}KKffb+NB|LFDranb)$6~U@!Q-%Th>Dd- z1#ar?HnctQcKr3wuw*6O?YjO?g{aslv(h@}=^r@UaIQ>+@q{3^m$!wYUWJi4S-Y|L zjyROHOJnt~N{XM9?ALNd58^}Q;OfH#OBD-Ti=^E;>MKQU%s0hb^Dh@+J>Z1Ajkx=} zl<#_W<(TlMXa%pi*FpwpTWlQ8py|!gHB_yi)QMK%-{?z*zN{6(x9;ib@_G^_AVDw`=SUbV($?LuS{IQM#C z+L24O94Jlw@M!^(pmdV(ir)>4O15z)m$j~=Jwej~j;Qgi&j+qYHP&rkp z*Jh?sU==O0f%Vh?))~atz!*c!UQbghBqcR5zX`+1 zFC+Lc5+~CQYjr<5wtV5c#ntGX;AJaror8N~Ro7G4bQnk-u$*7(vKt0M8{*73%h4&| z&sy*-0H0~JH<*I_;;@FYcVXG%($nw|jG}}Lw1;^VG&hRz@P39|CwLgXNMGC(=&PA? zni$Aw4pgI7`3lME^Tqv$Wmrg|?z5hWq!HcJxnng}UgI!jn&fYsA+V$yD4HnaqC8Ts z*#!~w`e4{2pK`Y(LQmN!m#vWd5LBUg6mZLWN-8H}IW|4_&mC_U(-jc!rXmneQyb zWA3t=s+R{B6>2Pt-PdhTd6n2F7~@SVr!I`7N_F=@!XJJ)hn ztxii&2j2@myRsE%UX7dT(Pdq|FjdgEELp6hUfP6pPnv_guopLKZ!W293>qApemfd* zkPigD^bC zYSQ2mj|#WwW7;b3S-+YmyB;pR&>n0elwTaxex_ z(l=FSyWf2iO?Elf+wp`jqvK{ZG?2Nm9%SO<^BN05Dm)1B<%`8i$_0hnkN+Xn$Yw2T z+9XM$^dCw|xar8^T*0?Mu!E)^{a79foNkW0UTDMan$%Rg+$Ps5Pu_xLsm_h^9V%2y zTRozKJGf$9In9+beAX;9b|BW(*&o9>3aAf$flu`cv`=HX5T$rqiF0ekEAj@fE?Vj{ z`U%_(z1~ly?wd?$@7^K;qtEUO6?u++?gBic#cotAR^6_%4AQN6qF^^0BPJ(yx=uk;QZT6b;ag^=$x4!;74c>Cyt2B=pLBk<3 z8c-JcZbS80E-&GE>F!N@=0+Y=Owo4stVl?K8Q)#4~o&swFEUTViJVXI5aKT27gzew#5A=6T}x{-0;AKN$A z0^NZlcaQPc_h#f_Ur|@n%5Q2_`TB+;^py5%epdTdCaP0!ugCds)f-u)vfh&3pS=%{ z#-&pXaGm?>ZY(YLvztw6;-z$VJcs(^h0hFxK2lQrqxgfNBP?z( zAdF!=nDt}OPtSV10+4_DZDK`Zrxiir^Bf;~d%Oq@p>%vxyRL>XD%g=}TIn1WL;J^z zJF4SniNG8IkYY#x1 zwyhHPqHw9dYGpE2Rz8|1cC=WFsl9 z8hum*+1G{l4Ea6;N5ODlj|VcApW{Wt;iQB$A#G|ne17zP&I$vdb#sUNhFlBh45W~U z3OPmOB2n+0BZ;uavzeoqjR-=%y;5Z&LKC0sMoC)H&0E{>1TgmUigIt^X40 zmg&IKf14-574Lrt%fG=Nxqo>)mn#~K{wPR=?B+&aScQ<1lzk_Uo@3F|Awn|}Ee(iz JZ3)nb z&^DM2c&8XmFeKXW0f+|<#*5X2v;7A05%6pxd;~~57!piL1Tm4Y7h*Kf6oIDL+HSRF zq3arFHruAy*8@7q?7Y0U^LsOI|NDICVJ}|3nxLSQC&{zq`DgP_4@K|#1j&ynEZFuh zz1}#3b!H(F2_qEJ;P=aUTFVe@RS2QvehMp%hLzg;w2x}F231j@D1LGovMgih+8|=F z>rhp7nLtlkxl#vkxjdT9X4-4LT}fu^gFy@3fRGl%eEJcAM%r_Z^Bbq9Wgaf@!%wvP zrE+!Pq)>vU1ug*|&dp+a>b85RU9DA3#N)#{e?_h&byD~yJcFa-0^V+H_EG`r^#+He z+s=ic4Ytkgk9hrNy(h#vzu=%t_zz07rr7O%%U?% zbQ=;qYBaYzbMMZTAo18RhsCz+J;`Sea!1LX-8}>YDgxwx%U+gz@R8pbO&}T_FsOjZ zw%ELC(&J;J#`N7=LS48AsVcZRuDbx1hVU=;Dq + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.png new file mode 100644 index 0000000000000000000000000000000000000000..c11a095d493d7a4a6970af7f14a1e6bcfd49720b GIT binary patch literal 713 zcmV;)0yh1LP)T zn4%pUk&qf%!Ho#E3SGFW|9~{Ukb+Qg;l_n-6cHCGZiGS&{sGd0=t@m})JJ?IxKTt+ zERAVul8Ls>WX6i;j+2m>w7BrX$=sZo`G*dpP;_ zJ!H88&SD{exdt&A4KPr+-8{B#>4FZLW)q_h7+G3g2|sukr^Ot+9(RL8yUhlFj|l%Z z5pubLxw#BWM|J5i>(51=JWW7VRg4}#j1M0_;r88o+Kn!sfU(hI4a%=i-bA4w@l+M- z-4P?vhVzsN1p}D4b{RW^I~uAuICKDoqJ)cABDi#Q9A#O?(EfeM<`y+cRXP2isgVo0 zZ@51*t2MNK^o4?W@hYJ$X7Tb(Qj?`93RcQxo{AV?a{7NPEhGKqt0p7V8))*ud?s6) z7pW?{-KNb~SAU^eiDc!te>RrO#W&>`B-Q5Ju2cJJ!b`r>prKnf)CO47)F+MJG5Z=k0o2>?MD<< zjV6-sXa`CyZEvRkg5V{Hhc#u8sc3Zohgpe*VoA&`}BvzMY!M#V8df vKzhATL5J={7QFsBNa+!+KfTrQTYv!o;tS>x{C|#$00000NkvXXu0mjfvpz+$ literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.svg new file mode 100644 index 0000000000..6642fa899c --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/10.svg @@ -0,0 +1,23 @@ + + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/11.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/11.png new file mode 100644 index 0000000000000000000000000000000000000000..d550daed595675f2d6009384dca167d10047f047 GIT binary patch literal 668 zcmV;N0%QG&P))K9hE3b6Jxa{HEA-@ zq%+AF@!VlDq;_0X51cu3=gxV~J$K$aF8syrKX`bAf=nJK&yW`;Z(jfG^sdVx`5J{O z!}uxJ8=KHJHTZm9cs#uj1inCXX@Wg=gix}d!fd0VCA06BQLWY>i6TT%Am_pJJcfq` z5DJYzlB5{|O>}a(F5v9S*J5&Rei6lD$+5*sMa74Yd1#uRqN0zsKokT+SD^wpLXU z4hLoS6$Mskb?uuuk^8iQR2Qw81X& zz0n8)fqsP+aMTu?wVG6HG^!-Vj+uweaU&%W`(m;QVA60r#ny_L3e%NJ4Ylt-s5%FZ z=MWh1Gq`HCFl`lf{uOk=E?NJRjQ?&OaB7GMCB>c(@am&M)y0000 + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.png new file mode 100644 index 0000000000000000000000000000000000000000..05dd6d4165b57839fcc8ff55db1f0cc131212003 GIT binary patch literal 743 zcmV?P)9i~|H-X+4AOz5{kY9}ig?M}pN`)K>QYl1AV2;$Z)(nF|VClJ7 zM0`Gwfk-qVe4d=f-d!%F(-}-mMG9$d?rew2XaL7?2#<|pI+lQ3E^}x!>V7)DA<0MK zc{vh-y{!eukMy8*e-L=%~o`EIB@>VNvyM3keHcc#|#1%i942<$L*^Z z(BWt;>r}UM3j)Kh;eYyEOy}0M%LK7v@=Fwpi&=q!a7yT&HBOM;OEJC!Zrtw|ExRryoJIZJm40ey$y;@!BQ^AHbI0anckp&}?h03NRY<=sootaNp~rg3kVdtHksI66*7iwniN>uc@sFxpMI= z8qE!OGa5wOrWWkn?nGz1ouC3sF~r7Tr6$+6ZSC?sdG-Py!sB3;FD@)In7N^ztjUS) z{FY22yOb@oxY+iC$yC}iH2h9%Wi`htlycatO)QlGisD?Q0UV@?d%_XShps@# zp{QS7i@G`^0~P>fkUYrA(qnUxTF5{`AfD%GidF2`&qjpRvFfLw1g6V>PsCOFV)6PV ZzyP0p(7n^<*!%zh002ovPDHLkV1f=@UK;=a literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.svg new file mode 100644 index 0000000000..4c4df2e6a7 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/12.svg @@ -0,0 +1,23 @@ + + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.png new file mode 100644 index 0000000000000000000000000000000000000000..11d816b6a495729097dca929770791933468bd9a GIT binary patch literal 714 zcmV;*0yX`KP)ZV1ATe=!_II-P-1senQ* zhg>crl|m{dZIHldY=qNkWA6-Td>4cOx_Ci|%mn9AEEb_6fPaBVNOiiSXlXu{rK2ta z`X;LuGWLEYj&vr6dv}NNJ++4Ug|O&2!l`iW$|ba(XhE^WW935(Z{EJc#^#pZY%)Bc zkedx+6};ds6a)+p4#3;j1B=*$FMJei#U$0-pEOzZ&} z8NDy|r0;?UO%6Nttc1m-WzknGm7vk6-7*|fP9ATD!O$q$oJxsIjgMU?YclHpdeB64 z_Fwdf_S0v6JbW~UtxOg@XS=IlDsc!I$W)WV0)gPGb1v_ zGj%xB)zRvXuEzHSe*F9eiDU}5eM3kQ?HtF!>97&SbFf;?__G31X7yh7MjUqYNFuq0 z@=h7CPjRtqmThS{ifk^263^3Yr15exfM45rIP6w7Y=hIU0=fSldyB;+j(v51#t&RT wo+h+R^Kj?|Jm6QrN{_GvjEMSQ!EXTu00=Jjk-{eEQ~&?~07*qoM6N<$f^Gvs_W%F@ literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.svg new file mode 100644 index 0000000000..50aa7b7d46 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/13.svg @@ -0,0 +1,25 @@ + + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/14.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/14.png new file mode 100644 index 0000000000000000000000000000000000000000..bd24e1b59e8018e221e2a38bbc771bdba8d21ebc GIT binary patch literal 723 zcmV;^0xbQBP)P=BmW2Ki?jA%tP zHYv4fswUaZcd`jMv)P2kZ2DjrcILg`zRzLMMDC8?vyjcb;wW(W!Z}e*mr*g^N46Ve zc@jbrEW<#n)xu~r(CepUjS!f>DTDy-7bVF%`!$F}Tm(Y^I-Qm*4LDARuFkcv**c)n zXej7v1B3$N3DN7HoPmaA(9*(z)9GpuVpuuXb8tB~z+lk(2#jy~OTl4MKD9=H0ZcFg|(*%C3j$H zB9p0%bK929csO<&oi?kg2j_=R(GY6i@q|FVaTEI<>WODA^h>^Y@%p_gVBo-hIJ)gv zj700s)9DP|JaRY%;@-2Demr%!o{K0JCdfm}XccbCf-=;mZsOCrx3Fnsz1 z-cC;8^X#{Vds;mr0)>Pf-8NOodWRj>jyCjebm7uPFC6wR?Aoy%M+W;V$*$xmpru{7 zjzG+2BTA)G9b{o~33o=vNXKfxvMi1r9zY}-#mvV~Fqw=LBGB$-m3i>(-Q#ZXB%96Q zdoY9_KSK!4h2@+i1QC&?q2GUE$Yt|#2y4tHGQ~Ws z);6l + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.png new file mode 100644 index 0000000000000000000000000000000000000000..771a7db7bfc63e70d9bdeff0a5710c62cc933613 GIT binary patch literal 762 zcmV2XDXzC;+qShu- zL^{20{=;q7?|0o~Zp#Dbo_o%{=X1W_-}#**AV<0P@R3YSGgT#RI7GGg#+8e6ng0tp z0Jo{>j6~-x;jjux6d_6?%w{937G}fA-_v12#_DcWjW~QG<47bDFzEHr>vdEmNRk9& zz5zB{31oQ-t7<0D7|#{cM7RS#CLR562eG)gl*=VnR$>T-CNVRkvd!M)!qBBGOovs6 zcW4yVmAes-#}SD}wTUKUK9mX@M7AXg5Cj3Us>;d~SuX6MUpj;&B>3XBTd~SAy6@h? zn*lfaUiE8s>S}9n?Q+`&MFTDm-0ugmuWAo>Ejj|&BhdxrLTd|}8jfdKu$7hKTOf%0 z51bTaQj%1|Wqy7E1qJ42w&R$Zp2bJsI9%_B(0%9T21s#{6-8DHu3v4ZZ4fX#ItJh9 z*cxPEks%606p9DF2PW|I*Y7MP3^7t%J`IPo_wy}hwDA-u6&YO1Sn^vEF`sC6I^oZwinDwXEHUZ3Wj)MceTkL#$vv%HK_ztB%A_HRgg z8t5pp%Fd?7V<;~#$!U$w3@Z2TVt|{v^_!hy-ovg~EbibuSWT>IYD^|0bUKL-UKcI+ sWYeo44OWr7Pn6_cqNYx5X89+;02;R9+^_`<5dZ)H07*qoM6N<$g5%g?CIA2c literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.svg new file mode 100644 index 0000000000..7fe3899e67 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/15.svg @@ -0,0 +1,22 @@ + + + +]> + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/2.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/2.png new file mode 100644 index 0000000000000000000000000000000000000000..3949673eb9e122ab974647cf40e02328628d0308 GIT binary patch literal 704 zcmV;x0zdtUP)DBBE%pG*D3+tcFUZb>pgwR-tR_(v@}L##Qacg(z_&h#+xkX(b`jf(q6rO-o}! zNmQgdX>=x3Vm)V=#H5*AIGoJMx!?Tr-*W|+tlM|*AEk7GB50HrjEGzryPVtFFPLl& zYg)m-wx%He>o>5u36DpHEW0UO3jIGxpc|$T0*o-=!>46rGT-2^+hMocD6FtrDJ%jc zmxw)WyCI6sC@U?gvKWBgjg3Fy>Df6XldGt=NFi2|DbDJOD#Pw@ep%n`F@l!!( z$6h@iJ$Y(?ipXTY@~4f{V~mvq6U*r;*(Z*7Ly|xj6 zM&ZwX`Ciqasv2gV$Dxu3Y;4Jo%Ef9_P1F6fnHl(E{uN%nUeHhH$f1MiJ=ue2Gtrtp z_NQ#DEK8=R(Gxg^u}i}Qe1qxPS_mCArxZgXyLN7`X&4+hi;>}rh{ose@NuLT;B>-f zwJJ0#X&rK)vmLVgznW0rDGUvSu$sy0zVx37QY{E?Q)9VjTT3%1oo-@k%-W?sJss(>y>9an)l@O5zv9)zaNx^stP;-kbE+WhH<#Krlf}ks-Pz(f mQUPmcQ0bXA#_IL{6JP*|T;<%S@3$cU0000 + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/3.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/3.png new file mode 100644 index 0000000000000000000000000000000000000000..23523d9772947ebcba621866386b94e2929cfb0c GIT binary patch literal 691 zcmV;k0!;mhP)qf`{sdjQ(D;aZE%6bFui9v^K1*D=XoDu@ z4V?i7>&|m0lsMF4;z>^Kh`_$D0wI9gl2i)Ezkb8=@-G+- z1_IElAUsd5Mfj;l7-0=j^ z#%d)1Q?>dNdOffD&K=t@9zKD?V+Y~$b|IT9prRBGn@V-iZH zazZMTum7#LryCPz!zeCExF2}}v0Xsu(5Qw{E?-1#0MN7A59yTJod6g0A5a{-r%GAXnQ#=c + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.png new file mode 100644 index 0000000000000000000000000000000000000000..ced622a160097ed12632193f03402012e816b6ef GIT binary patch literal 671 zcmV;Q0$}}#P)utgI-8 zFf%bSFaj|z4>yB?f-FcZ0cH>r)UXMUpS&=byA@JqvH--lfpMdp1!;OIn#Q6E^ zSHj`r=do%E^7CSt(AkJ;(3h_a@7{e70EG|CB?%86K4oSxJF`lau2BDF0y1#lSe%2RRWKbq;UeegH=yFgJt4hnJTJ zh`B+5G6865Bi^C_$uLlAGyq~y2ws5V4L}1vqN@i8FaZ8!#v^Sq3#b49002ovPDHLk FV1jxd8f*Xn literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.svg new file mode 100644 index 0000000000..a532a0d1e8 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/4.svg @@ -0,0 +1,19 @@ + + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.png new file mode 100644 index 0000000000000000000000000000000000000000..c117955328f043a04efec7b82fc02435ad3bc9dc GIT binary patch literal 718 zcmV;<0x|uGP)1~tCI}#cHhj$%r`U3fr&ibe(pjOKvlY4e_mg`yJP0hnFNRH^*_FB zHV3s@9e9BUNfbd*hGAep*6{u@g1s~aL4YMRk=PeiiN{mGaU4jJh$?^}pz<8phKFEk zasp&o4kOTt0R#cgqS^iMF{&h!Y5GTyC8-aDLls2Cb;B8t8)h+x0!bQ;CTRK*+D53AJ&1HDmVWs@9mK#oD0e{C?%jctqbCdm zK76#nEOC|2`~=6Tu@FA)iPQy6PxLWP0GrRY;ZV~J<+LT8$r4C_WrFHedqAeJ6p|~K z7hw6iA9A@oynDX~xk91igXKWAR%3kfW_`C>EzFiH75Ms1Wt`k!4fgp_Su{(O3ARi! zTxM`aHlA$4aq0)_&Y`L!M=Ok6I=2NoL`I`bcHOSi29WtV5BRTM>O7armA))+RzMVl zJhoXUkjS)ayf2%J7tSFc*I0{h-wH6GL?YR_ci6|sMCeC&`(`J#eB-898L`cOk0;qM zC5}_r5gz=$MOa)o55-~$Uc7qEh^0xUGMvtFiVt9Xp*^u9R2vSPauALEcVdZj&y0)S z1=~B+y*o7e;Y>E~Rn;RXm3|vQWIWsLqu_AZ$vxP;guPo#8PODmDwV2It=6E?Y~mIR zV6zRiIiM}x|L3Qm2XLu%q@~eX-;;uw?_U810AhdM;~X3*1^@s607*qoM6N<$g41|J AhyVZp literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.svg new file mode 100644 index 0000000000..b4bd44c187 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/5.svg @@ -0,0 +1,21 @@ + + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/6.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/6.png new file mode 100644 index 0000000000000000000000000000000000000000..da45f300d07fa5ab54a7c581b1ed99c73f7fb3c1 GIT binary patch literal 724 zcmV;_0xSKAP)}hs&Mw-S2$&%;?Y-_a8rVuoPqnF!V7<3<-ub!`Q8n>oe^& zx;BDgmhKgbCFz@zN4ZkrFPP0HIGuLLvJ-+JOwu8Yth9%O5j?Ne>%mwoi61|IK{Og+ zG#VHLDukfd!NAttUJqO@iIn*?B7Kv8d8jS|l)-xy+)j_t5?kH(` zke+@&CzVQDFm;INVDNel;mRdHtX2z`8=0C$R#BkS{S$xs)Cq{9NNt5lNg!WPrL2-` zIrVmElzR}Jo#Woz90|f~GVSbdD&HxEw03-77FSvb&YeAjF4=`gPhQ|tY60V~Cb6`f z<_2rQTB0;aofzmEb9uFer1wZS^QM5|t3xFOI zP#X^(KE>CiG%gPX;BrcBMsGuFN4423`x1p;PGE6q8RHX^eC<8#Y1y}RS}7%nB-($p zyJd4_ZG-2Y9xuUu04V@pl8Mz3hr!_NuxSjKx!YGWQ#M9fR8~)99 + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2d43b0d8830b2fdbec0a7163f9983cdafcb2c4 GIT binary patch literal 670 zcmV;P0%84$P)$LN?uG;qA=MeD9n0zIksY40#?uS)bRYi3cn9j|Slc1IJ}LgsFvUwL04E zf3VxFY%5LeDYa-nq0r;(V4!-v8Tyg>iBd_0KzB_h0zwEJlxS?s4Tr;CW(QEBw>lDy zVDneDFq_=og(wP;O(sepbx8KE3H`6EFAqi%41s&jzQbeVqa!qb6UFXtmJb$6X zG@4EPZMXd_6Q+q%RqKZNyQzpviwk)9`VDvLe;N(G<`;*Fc;)gXD8&-qe@qze6LRd% z-f7Ro8AH&*{8eo4d>ueQU@@D)u9=ai6a~ChfSg$mX#X=&vgTq|jFba=n9I`BL(g2=y zE0#qg%cgMf+8n&z3GJFo__nW)f?_Z|<%4U~$^3Xh?$J&PtG%5p4ET@SV@1enpl3P8j5=rf@&5%F0GU9-aU-fYO#lD@07*qoM6N<$ Eg3x6q)&Kwi literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.svg new file mode 100644 index 0000000000..0652ed9c87 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/7.svg @@ -0,0 +1,19 @@ + + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.png new file mode 100644 index 0000000000000000000000000000000000000000..067e861a63b6ae077e07a529fed672a34700632f GIT binary patch literal 733 zcmV<30wVp1P)|)csJNI|a6;NW_9KO4eCI?xwvXmtAoI88wU8(az z3FkpFS0b6hkJKVmq6$W%9ve(1sMX>G?VTqucS#Te*vZi%k(k*Z2w`Pq6&j72OoS+s zsRUT97TE1o{C|*uF64Yg1)!FuSFhiGF#G%=WO;)fi3OWVMJ5PXN~f`~kb=o*Y;*RX z!02Q582hUfuzR0<cVtZ3#em#@h&QE-M)kS4<2D(M_Z91^9dFVF8)!olv6WvMF+l3uBFx9x(hRrsGN@C zRFGB%lz}XWI+thRh{Y2!(8<1@{Mys!o^|!Xep*Q~%OH}ZDcU@Js+TUd0yl0ABNC0` zc=tgZ>2l!H7ayjHS#BtPNxl=0z1mg;!T{d)AL0Kxj$cbl7=5iB z8EL4mEn*Xk&!c%q6WaH*puTP!`kdYJdZOT7DlBH6Mr4UeqG(TFzk{URIy)PeB@P59 zP-(NmdF&8ccejv(1rOa%5DbN7iCOL%do>rKi~WUyiuH2EMj~_2Y9&Y-&APG|$XI%= z9|9VnR4)Iw-YMI~i;F*zqAp&|W(&L6t90>L*{9$i?+HHv-g58B9{~mcaZ~hLXSP$J P00000NkvXXu0mjf$+A+e literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.svg new file mode 100644 index 0000000000..dd384e1711 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/8.svg @@ -0,0 +1,24 @@ + + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.png b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1c09faaad64326f4f56e15c2c46099a5f260cd GIT binary patch literal 743 zcmV?P)@S=BQ+=mO@Z?(R90r=%y$}1f!zApuZq2f-XiSbx}9bqFpQs+Ja(GkhNAyrE|@% zE%m68Uo-ms&OGLE?uGZf2Yuh?Jn!>+ehk{gjfuNwNO6(0HT^tE^YYlaXlp;yGVCG6 zmoNObt)$W@mP(MaEELKP=(HM`Oa|KKBYBO0Z|C0Q{=>(-CK86hkwXJ`@oKiwlgk%q zu?y?i;)%_55JIU`K&eoO*!(FLsh&=0yMbWnJ4QWjWH=7xav6^O>zY`t7K9_wCZN9% z*5R~T6;Zr#?07Qu99rUwT|GO&kfWVn2oj)vax#lxnE%$&YSgqW(sgF67PE-S$cf`n zsg$^WYXUcK-$AihqQ@%g(Wut}sDmk!$=$s>e4oF3Lv3x1Z-_3%Fgompgs>=;%5V-1 z;@*QtB9JYeMq2#z!A?JWnsX0(^p>rrfpBCQQYnkoUuoi*9QO3~KrWYIYWgJ>zJ~Z! zXc`TAn9ZG(+9@($Znpi0SbW9)X+Fd=XlHw>kI|^-tzWnOtRSoqu5PQ@Z_w+!;m8uX zKLxP{M8vKxGp&??R{+>>i|dS>btihM9`wHGbQ)g7x(2@H8{8J81+b44J;^}pU~~Kv ZU;tNz^l7oS#a;ja002ovPDHLkV1hiDV3+^^ literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.svg new file mode 100644 index 0000000000..40f61aed18 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/callouts/9.svg @@ -0,0 +1,23 @@ + + + +]> + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/caution.png b/documentation/src/main/style/images/images/org/hibernate/docbook/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..f6431e7af7295fb85bc660bb043093ec3ff755b4 GIT binary patch literal 5956 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 md!^{EFS(nx{r^|_p8){lz|XAjvLm?w0000 + + +]> + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/home.png b/documentation/src/main/style/images/images/org/hibernate/docbook/home.png new file mode 100644 index 0000000000000000000000000000000000000000..50c39f3ed8fbde071fbe95d8ec1eb4d9742d82f5 GIT binary patch literal 2887 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 literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/important.png b/documentation/src/main/style/images/images/org/hibernate/docbook/important.png new file mode 100644 index 0000000000000000000000000000000000000000..76b90e072e1a6f957f18426fc7e1f0ba0778a91d GIT binary patch literal 5970 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 A*#H0l literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/important.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/important.svg new file mode 100644 index 0000000000..7c727b948a --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/important.svg @@ -0,0 +1,137 @@ + + + +]> + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/next.png b/documentation/src/main/style/images/images/org/hibernate/docbook/next.png new file mode 100644 index 0000000000000000000000000000000000000000..3957e327a37fc62bfe6fdd5702999ebd2c3d0771 GIT binary patch literal 1602 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 V+W85?$d&*A002ovPDHLkV1gnAyFLH_ literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/note.svg b/documentation/src/main/style/images/images/org/hibernate/docbook/note.svg new file mode 100644 index 0000000000..28acab9be5 --- /dev/null +++ b/documentation/src/main/style/images/images/org/hibernate/docbook/note.svg @@ -0,0 +1,137 @@ + + + +]> + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/prev.png b/documentation/src/main/style/images/images/org/hibernate/docbook/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee9dedc0fe40d970a594de179d231cfffd791e6 GIT binary patch literal 1511 zcmV3w7n=X-I#aFnMBOu2D2}x0L zIW8a)1X_d=SK#9P>OE)Y+`YVNHtFJJ=B)w>)@7JwEB6p@fLxEwU{#Ag8eY?C(gF*oOm#k z_*>(?WCGSMrCnKIg`g@zg94xcNegEdyFRGQx^{CodwgO#o}Dx#D4>jg#!AfVGz*r4 zv}0EqM%1S#L1{<<)Q1;e;l8QW7_ftv zfLj{owM)X%pkkWzB|tg(_icvE8&%*EYM{<4_kNa2aUgXUrABY zC^0{{4NL_9G5ho)v?u`j3FixKy-%E}>Ckm`k8GTpwgj`2=(7?*zbO@x;-di}HPkh< zbK2FWuBmketJJO0_NpQ@>PtYf;?K$#r+?ni*kaW6+#cP?X*1+8c&#u24B1H#85Rr< zM&+FROm!ouRm|j`l8g=+SjBD)iTG9;n1$5b?7bWM`KjjI%UwhH(`HKu`;azyEf`*k z2W?s`AO=s5RI?@@zB>lSz9Cq>>hWJ=)`U$-L_BcYOAyec?Q&*NdhmQ|d*^_D=+5{i zZUg!Iz^-j+px4D=Z3c0mQg1Dvt6ZMa#`pB`>FIAykM z7XEmnXaf}I#X+D(qd2U0_x%B;$!SQ8d-8@{dMP)DD_7!NdFT1}cHm8-jSO2}p<ed*VF%3(8+JxUubGE7GYcG0!G5R zr?4MR#FF9!X5sgI{3Tpyy$Xj)4X@^EV~lv{KNPUVU0^XkOy>@Cv~w;32a)wSh-5m0 z2oA~m>|`)(PJ^iMQ242>3*P?d2*f@UURHhl^`m&m1P?ro#mocS`2^nKvf>cQB@mT_ z3n`?xNYdk6K=19*m4{9?>)Njl)+4gfhT$384{ST zI*^O>QYz|+T!RF%Se%;8Q6Dj0-ut{vkrqRrsgPG6T+y|D(iKQwGwTnzn zNaC4u4L8ERs=AbQYj7;bVzEW62=uG{rS6@*Jgk|hLfi*dSZt~&kD?|P;7wH^!dR}B zdwJ)nErY}NGq3#cZV7J+q;{2Ux&@ZQnDeqSl!Ecw_P7uLtCc1>2RmH{m47;bdlh02Y%`B^zp9%0{}8#ERshzuF?Pi N002ovPDHLkV1hGW+OPls literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/tip.png b/documentation/src/main/style/images/images/org/hibernate/docbook/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..3b377637332b1474ee0819361636f47498736883 GIT binary patch literal 5944 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 + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/up.png b/documentation/src/main/style/images/images/org/hibernate/docbook/up.png new file mode 100644 index 0000000000000000000000000000000000000000..0612e13cd65719f76760af1ac799558cefcb7fd1 GIT binary patch literal 1525 zcmViNELQtaVKq?`iw|l-yhVL5O}xbiC6St#8f=PqsWpXGYzmFr zf`uZBD5gNU)q)KmLMdUvU3NUPnIVVMnc1DCrVnzGFS|2y=FE5g>-m3x)v-G6>_97B zz%}zDy&gy2U_*A^8G-~cr8T&fl0>(O7?LALUi(9oS>eWzu!aZ?b&V9v!KcCcAw5Ka zp{_YXf{Vhhn;^^mCn}~?E0U6u7)Ov=6n;ghRyCt?Go;jb>1#1`7=b*Vez`US|LQRU zg!@`yo`(1qQlo0dPw9#F#tKAuLV>OJ;p%s*8sjN~8p;fAuaii`Igy-JAi_&5=*fzj z;zc*NzQK0+AifSJBuSH0Wm=4%>eW!{)%OifJjPF)n4B#U$dLqDnxwC4X8e#iNscFB z__m>IvY>@*+7_0Hf9(85Pb!datNj1BS7Gc%mpO%m{hg;vw&$SeUxuNUi>+ZL{#4wne1I z7S-4wDLv6a0$+UVMA7_$E4s+@&UDLqof0ZlD^_l!@@-d}7=h7hB{ zLy$*laR#_tZo{Xw7qba+TEY&Iug=1#I1p&apv+6=lbRL_Kfz*3#p=~A!IZfPjD`Sc zZXYxYo=n=Is^HD2a1Pr30xtKD+9!!tBX;H7EVl?Kx@ju`CW8-llG@O_Fcyweu8yh?vm$9p`M)}pofy8oMlciIyMbe zM;oBMYhc;^=*Vy|Wv9Z>wMkQbV|Ro^iJ+MJSTE6hSz*WnFhVPr#e#5&Jr&b4$w_3=yjdv_=IQW}yi`lYHmBtdMc zLThTd;>o*7_r<{L?^Q!nvmI{EIzY=ZbDI*ve<|Lb-1d`wD8c^Q$o8tw>q9ZXl#>p- za<+KFPXF*5tPjyh1SCduZ~W= z$uQ{V`p7lkms@jAloX^)Q1vcH*T}#2{HcHEiA!b be+3u-VR`NUz8~C-00000NkvXXu0mjfj?CGr literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/docbook/warning.png b/documentation/src/main/style/images/images/org/hibernate/docbook/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..be2b415a6e6807c38d88cf00583ff07a9f32b4c1 GIT binary patch literal 5134 zcmV+p6!GhcP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000R&NklP<{S(aTK=w^#x^Ux4g?QSNm)J6%QNQv5l zR;rMihpu=)%0rNnKJ(B@m70oH?OWBp6je$Ssf86KZICFJNHiqk62ppx-39j2#rE#Z zu%7GbgJ&k=@r><2SbC(9$K$c*`+)L3CYzCY#M( zj_GX%!2N%KA&R01o_H<Kki6{6Qlr4pH$nfX#Ju`Ud- zu&_{~lzuFVBF49E!`CDU0C2HV!KsA>R4oetW(gs`lqBiT036Q(;Ume_9*b3IsZ%`hh9%qH>ALPuP1DR1LM~BC%`PnS$X21HQYq^L07zA<)gMZdv>5al{ zY8AE@F95Jf*RlWlbttp5kW6!cG4^X!RWItg{)%t$NX&GK7buEClH!Gn9F&m8eP1z* zrW1q`KMr_-@sH*C3S65fJCRl`aW0i1B5W_I~ zd=bTBF&4yFUdDSbzYJq}xgjo>!!zUKiQp~(i!rz!Opj&Zg*$h!uUtm2rUAfy+qVCu zY1-SSX%-?dapGHIC3=HD%R}0>1K$s~O1X^s(h~mu>Z<|B@c1~Sfq}MZ(20TBd+QeV zOiiIz({hZlHx0x1Sktt(+Z4-K5U$yM2@$-pQrdA^g_tHPo2qc0e~iVf@N7l!MG_VSeK`! zTCPn`OyKmPLok+?(KkB!g~mKdX?b6{?5E`|uIv6y)3jF-T&l^P;JZ^06CBs{Ky`LD zs0q<_YjbyStUZ*j}4z{Zw(M1BJQjJTJWdWiX)Cl#? zowh=xfdTyB!w(_masYsPXV2mv2M)koS?PKx9qK~>fJv!;I_y~@I=LbM7#A%n(H{z1 zqFsAx_wE1y0QyEp@$Dl=;-{0L2@FpNC?UafRi4L{ViBjdY{7|b+Zt)wb+5))fD6aO z=f%vnpY_jqo)50qE0v~zj%&9kCR)Mv?1>egA_QEF@b?A>@t5t}@ljtNX1oq@T^E|B z-D#I%Qwc-iMqqp6rw5CR9bH13oyExm2k_maM+1vY9y`{E#u)3~Pp2`N&too|MJ1DI zEvkkQ9O-oW-Gn72_z)3qY90VG0Q$m0R{=UbF@Zk~4r24@D6HjWRIXla0`P@T%Q7^t z9wiC)ven&GD)nw(U*CmxW2z`blNfFR4Vmv zNs^8i3WYKN(-Yrml`+;5JpfSfhTs62YD1E6gX03x^ODpe+;JQjhJkv$4%-`(aU3_5 z$z)DtGMP*HeEx=C_xzIK6?G?OJuA8z-|9}$aZ`P9u@U`kgwKRhYZt;lkY)L-BuVoj zp?2i3LZ7t*VNnR?$AdqD1psE6O{s8NmNA*n$7U4EvQV$rVHgHn*9{B*r!33oBuSc! z^s*BHaY7Jw=vrHllz&pI)q=UiYRD2xx{l9^#YEwzX$C%?AbdU~!ijMeI|jy%Id>vU zq^<5`7{(^w>~r-xes$vp>W+hIJ`Xe&$l9gCcEXdyM?vC%oX}^9YrVcDT-IoK@ZbT~ zty_n=dc7&5SeDfyoKkvO5QGa|2=4}@oAWRP!ZG0jV7gbSHqg*Q9H1f)$!lZ7RIfDvIJS48u55uh&rzS%Ok} zRusi^g+k%HD2iJ6I}ahe8=>896Es=E0pRra_y4t4tNmwXW#u(O2uCTMFBA&r(&@Aw zD)-S{qHZkEZ4Y;|`_xkGh@vQ81t5gioC;*L_l(Pg&xQ{_Ny4~zgc>r;);zX8oSVBy!iSTy& zdr1&Zj1}VCi9H74U5k&plmEq}wH+k + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/images/images/org/hibernate/dot.png b/documentation/src/main/style/images/images/org/hibernate/dot.png new file mode 100755 index 0000000000000000000000000000000000000000..079add95ded9a07208eda2360b24fd19b6c3808a GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1h!3HF`e}{O3I7!~_E)4%caKYZ?lYt_f1s;*b zKzU&hW@MN(M*=9wUgGKN%6^T5omq~TchT*OKp`tn7sn8e>!l|*@-is!Fgv!F?g?=F zVmIwMC$EV|O(nl)a$3ARUG$TxVts(z`7?EMfov literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/images/images/org/hibernate/hibernatelogo.png b/documentation/src/main/style/images/images/org/hibernate/hibernatelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..47c4dbe840b131a7134daa4d92de43f06f3c271d GIT binary patch literal 5161 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 literal 0 HcmV?d00001 diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/common.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/common.xsl new file mode 100644 index 0000000000..d89d5a51ab --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/common.xsl @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + images/org/hibernate/docbook/callouts/ + + + + + + + images/org/hibernate/docbook/ + + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/eclipse.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/eclipse.xsl new file mode 100644 index 0000000000..fc68d5f1d0 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/eclipse.xsl @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + Hibernate Help + org.hibernate.help + Hibernate.org + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/fop1.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/fop1.xsl new file mode 100644 index 0000000000..629d080633 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/fop1.xsl @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/pdf.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/pdf.xsl new file mode 100644 index 0000000000..aa2a8e07a0 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/pdf.xsl @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + Setting 'title.font.family' param = + + + + + + + + + + Setting 'body.font.family' param = + + + + + + + + + + Setting 'monospace.font.family' param = + + + + + + + + + + Setting 'sans.font.family' param = + + + + + + #4a5d75 + #4a5d75 + #4a5d75 + #4a5d75 + + + + + + + bold + #EDE8DB + black + + + + + + + + + + + + + + + + + + + #EDE8DB + + + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-common.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-common.xsl new file mode 100644 index 0000000000..dd4adddb54 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-common.xsl @@ -0,0 +1,58 @@ + + + + + + + + + + legalnotice.html + + + + + + +
+
+ + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl new file mode 100644 index 0000000000..f38cc42115 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl new file mode 100644 index 0000000000..5b855b8985 --- /dev/null +++ b/documentation/src/main/style/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/hibernate-core/hibernate-core.gradle b/hibernate-core/hibernate-core.gradle index d8dee4f889..99a98e867f 100644 --- a/hibernate-core/hibernate-core.gradle +++ b/hibernate-core/hibernate-core.gradle @@ -59,10 +59,12 @@ sourceSets.test.resources { setSrcDirs( ['src/test/java','src/test/resources'] ) } -ideaModule { - sourceDirs += file( '$buildDir/generated-src/antlr/main' ) - testSourceDirs += file( 'src/matrix/java') - testSourceDirs += file( 'src/matrix/resources') +idea { + module { + sourceDirs += file( '$buildDir/generated-src/antlr/main' ) + testSourceDirs += file( 'src/matrix/java') + testSourceDirs += file( 'src/matrix/resources') + } } task jaxb { diff --git a/hibernate-entitymanager/hibernate-entitymanager.gradle b/hibernate-entitymanager/hibernate-entitymanager.gradle index 435c4fcf60..5b1b643931 100644 --- a/hibernate-entitymanager/hibernate-entitymanager.gradle +++ b/hibernate-entitymanager/hibernate-entitymanager.gradle @@ -1,20 +1,8 @@ import org.apache.tools.ant.filters.ReplaceTokens apply plugin: 'java' -apply plugin: "jdocbook" apply plugin: org.hibernate.build.gradle.testing.matrix.MatrixTestingPlugin -buildscript { - repositories { - mavenCentral() - mavenLocal() - mavenRepo name: "jboss", urls: "http://repository.jboss.org/nexus/content/groups/public/" - } - dependencies { - classpath 'org.jboss.jdocbook:gradle-jdocbook:1.1.0' - } -} - dependencies { compile( project(':hibernate-core') ) compile( libraries.dom4j ) @@ -28,7 +16,6 @@ dependencies { testCompile( libraries.shrinkwrap ) testCompile( libraries.validation ) testRuntime( libraries.validator ) - jdocbookStyles "org.hibernate:hibernate-jdocbook-style:2.0.1" } sourceSets { @@ -127,21 +114,9 @@ task copyBundleResources (type: Copy) { // make sure that the bundles for the packaged test (PackagingTestCase) are copied as well processTestResources.dependsOn copyBundleResources -jdocbook { - format('html_single') { - finalName = "index.html" - stylesheet = "classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml-single.xsl" +idea { + module { + testSourceDirs += file( 'src/matrix/java') + testSourceDirs += file( 'src/matrix/resources') } - format('html') { - finalName = "index.html" - stylesheet = "classpath:/xslt/org/hibernate/jdocbook/xslt/xhtml.xsl" - } - masterSourceDocumentName="master.xml" - masterLanguage="en" } - -ideaModule { - excludeDirs += file("$buildDir/bundles") - testSourceDirs += file( 'src/matrix/java') - testSourceDirs += file( 'src/matrix/resources') -} \ No newline at end of file diff --git a/hibernate-envers/hibernate-envers.gradle b/hibernate-envers/hibernate-envers.gradle index aa29492ebe..ee87491c93 100644 --- a/hibernate-envers/hibernate-envers.gradle +++ b/hibernate-envers/hibernate-envers.gradle @@ -29,7 +29,10 @@ sourceSets { } } compileMatrixJava.options.define(compilerArgs: ["-proc:none", "-encoding", "UTF-8"]) -ideaModule { - testSourceDirs += file( 'src/matrix/java') - testSourceDirs += file( 'src/matrix/resources') + +idea { + module { + testSourceDirs += file( 'src/matrix/java') + testSourceDirs += file( 'src/matrix/resources') + } } diff --git a/release/release.gradle b/release/release.gradle index 1f1e5820ff..4c19eec677 100644 --- a/release/release.gradle +++ b/release/release.gradle @@ -3,7 +3,7 @@ apply plugin: 'idea' buildDir = "target" -ideaModule { +idea.module { }