= 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]] == 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...