mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-07 11:48:18 +00:00
This is ~ 2 orders of magnitude faster on my machine, so it can be executed as part of the compileJava task. Also, it actually logs the failures, instead of making me go hunt for them in some generated HTML-based report.
= 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...