hibernate-orm/tooling/hibernate-gradle-plugin
Gavin King 054aeff78b completely remove checkstyle and replace it with a simple regex check
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.
2024-09-30 13:10:09 -05:00
..
src HHH-18500 Added slightly modifed existing test case with addition of module-info.java and set extend enhancement flag 2024-09-19 18:58:35 +02:00
.gitignore
README.adoc HHH-15314 - Hibernate Gradle plugin is not working for Kotlin projects 2022-06-08 17:32:52 -05:00
hibernate-gradle-plugin.gradle completely remove checkstyle and replace it with a simple regex check 2024-09-30 13:10:09 -05:00

README.adoc

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