[JAVA] Generieren Sie automatisch jpa-Entitäten mit Gradle

Hintergrund

Hibenate-Tools, die mit Plug-Ins funktionieren, können nicht mit anderen IDEs als Eclipse verwendet werden. Es scheint kein gutes Gradle-Plug-In zu geben, also habe ich es zu einer Aufgabe für Gradle gemacht.

Ausführungsumgebung

Verfahren

Hibernate-Tools hinzugefügt, um Abhängigkeiten zu gradeln Nachtrag: Wenn Sie Spring-Boot verwenden, wird slf4j im Gradle-Test abgefangen. Bitte kommentieren Sie es aus oder schließen Sie es aus.

build.gradle


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

Aufgabe hinzufügen, Pfad und Paket je nach Umgebung ändern.

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)
            }
        }
    }
}

Platzierung der Datei 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

Platzierung von Reverse Engineering-Dateien im Ruhezustand

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>

Führen Sie danach Task auf der Konsole aus

$ gradle hbm2java

Spring Data JPA verfügt nicht über einen Entitätsgenerator. Ich fragte mich, was alle machten, aber sie mussten nur Ameise mit Gradle verwenden.

Referenzmaterial

Recommended Posts

Generieren Sie automatisch jpa-Entitäten mit Gradle
Generieren Sie die DB-Dokumentation mit SchemaSpy in Gradle
Lassen Sie uns Mapper & Entity automatisch mit MyBatis Generator generieren!
Gradle-Einstellungen für die Verwendung von JUnit 5
Verwenden von Docker von Java Gradle
Ich habe eine Quelle erstellt, die automatisch eine JPA-Entitätsklassendatei generiert
(Spring-data-jpa) So erhalten Sie POJO (außer Entitätsklasse) mit JPA2.1