= Hibernate ORM Gradle Plugin
A Gradle plugin for introducing Hibernate tasks and capabilities into a build.
== Set up
[source,groovy]
----
plugins {
id 'org.hibernate.orm'
}
// HibernateOrmSpec
hibernate {
...
}
----
== DSL
The `hibernate` DSL extension is the main entry into configuring the plugin
[source,groovy]
----
hibernate {
}
----
It defines configuration options:
useSameVersion:: Specifies whether to have the plugin inject an `implementation` dependency on `hibernate-core`, implicitly using
the same version as the plugin. The default is true. If you'd prefer to use a different version, set this to false and define
the dependency on `hibernate-core` as you normally would.
sourceSet:: The source-set containing the project's domain model. Only one source-set is supported, although all languages (Java, Kotlin, etc)
within that source-set are considered.
It additionally defines 3 nested DSL extensions related to:
* <<enhance>>
* <<jpa-metamodel>>
* <<hbm-xml>>
[[enhance]]
== Bytecode Enhancement
The plugin can perform build-time enhancement of the domain classes. This is controlled
by the `enhancement` portion of the `hibernate` DSL extension.
To enable enhancement, reference the DSL extension:
[source,groovy]
----
hibernate {
enhancement
}
----
Enhancement has a few options to control what enhancements take place. All the options default to `false`:
[source,groovy]
----
hibernate {
enhancement {
lazyInitialization = true
dirtyTracking = true
associationManagement = true
extendedEnhancement = false
}
}
----
[[jpa-metamodel]]
== JPA Static Metamodel generation
The plugin can also generate the JPA static metamodel classes based on the application's domain model. To enable
the generation, simply refer to the DSL extension:
[source,groovy]
----
hibernate {
jpaMetamodel
}
----
The generation accepts a number of options:
[source,groovy]
----
hibernate {
jpaMetamodel {
// directory where the generated metamodel source files should be written
// - defaults to `${buildDir}/generated/sources/jpaMetamodel
generationOutputDirectory = "some/other/dir"
// directory where the compiled generated metamodel classes should be written
// - defaults to `${buildDir}/classes/java/jpaMetamodel
compileOutputDirectory = "special/classes/dir"
// should the `jakarta.annotation.Generated` annotation be applied?
// - defaults to true
applyGeneratedAnnotation = true
// error suppressions to be added to the generated source files
// - default is ["raw", "deprecation"]
suppressions = ...
}
}
----
[[hbm-xml]]
== Legacy `hbm.xml` Transformation
Coming soon...