[JAVA] Générez automatiquement des entités jpa à l'aide de Gradle

Contexte

Les outils Hibenate qui fonctionnent avec des plug-ins ne peuvent pas être utilisés avec des IDE autres qu'Eclipse. Il ne semble pas y avoir de bon plug-in gradle, donc j'en ai fait une tâche pour gradle.

Environnement d'exécution

procédure

Ajout d'outils hibernate pour graduer les dépendances Addendum: Lors de l'utilisation de Spring-Boot, slf4j est pris dans le test gradle, veuillez donc le commenter ou l'exclure.

build.gradle


testRuntime group: 'org.hibernate', name: 'hibernate-tools', version: '5.3.6.Final'

Ajoutez une tâche, changez le chemin et le package en fonction de l'environnement.

build.gradle


task hbm2java{
    def basePackage = "com.hoge.entity.jpa.gen"
    def resourcesDir="$projectDir/src/main/resources"
    def srcDir="$projectDir/src/main/java"
    def preparedJdbcConfiguration = [
            propertyfile:       resourcesDir+"/hibernate.properties",
            revengfile:         resourcesDir+"/hibernate.reveng.xml",
            packagename:        basePackage
    ]
    
    doLast {
        project.ant {
            taskdef(name: "hibernatetool",
                    classname: "org.hibernate.tool.ant.HibernateToolTask",
                    classpath: configurations.testRuntime.asPath
            )
            hibernatetool(destdir: srcDir,
                    templatepath: 'templates'
            ) {
                jdbcconfiguration(preparedJdbcConfiguration)
                classpath{
                    pathelement( path: "config" )
                }
                hbm2java(jdk5: true,ejb3: true)
            }
        }
    }
}

Placement du fichier hibernate.properties

hibernate.properties


hibernate.connection.driver_class = com.mysql.cj.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/hoge_db?useSSL=false
hibernate.connection.username = user
hibernate.connection.password = passwd
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.MySQLDialect

Placement des fichiers d'ingénierie inverse Hibernate

xml:hibernate.reveng.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering
    SYSTEM "http://hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd">

<hibernate-reverse-engineering>
    <schema-selection match-catalog="hoge_db" match-schema=".*" match-table="foo" />
    <schema-selection match-catalog="hoge_db" match-schema=".*" match-table="bar" />
</hibernate-reverse-engineering>

Après cela, exécutez Task sur la console

$ gradle hbm2java

Spring Data JPA n'a pas de générateur d'entités. Je me demandais ce que tout le monde faisait, mais je devais juste utiliser fourmi avec gradle.

Matériel de référence

Recommended Posts

Générez automatiquement des entités jpa à l'aide de Gradle
Générer de la documentation DB à l'aide de SchemaSpy dans Gradle
Générons automatiquement Mapper & Entity avec MyBatis Generator!
Paramètres Gradle pour l'utilisation de JUnit 5
Utilisation de Docker depuis Java Gradle
J'ai créé une source qui génère automatiquement un fichier de classe d'entité JPA
(Spring-data-jpa) Comment obtenir POJO (autre que la classe d'entité) à l'aide de JPA2.1