首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate工具使用Gradle进行逆向工程

Hibernate工具使用Gradle进行逆向工程
EN

Stack Overflow用户
提问于 2021-02-10 18:41:37
回答 1查看 126关注 0票数 0

当我使用Eclipse作为我的IDE时,我经常使用Hibernate工具对数据库进行逆向工程,以获得我的实体以及完整的注释。

我最近转到了IntelliJ IDEA,我认为它是一个更好的集成开发环境,但不幸的是没有Hibernate工具的端口,所以我不能像以前那样生成实体。我知道IntelliJ IDEA有自己的逆向工程工具(可以通过Persistence->Generate Persistence Mapping->By Database Schema访问),但我发现它有一些but,有时生成的实体是完全错误的。

我知道在Ant中也可以使用Hibernate工具。有没有办法在Gradle中也使用它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 18:41:37

我成功地使用了Gradle的Hibernate工具,这在很大程度上要归功于this question

事实证明(我不知道) Gradle确实能够调用Ant任务,因此可以使用预先存在的Hibernate工具Ant任务对数据库进行逆向工程。

为此,需要有一个hibernate.cfg.xml文件,该文件包含告诉Ant询问如何访问我们的数据库所需的配置。这是一个示例:

代码语言:javascript
复制
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="hibernate.connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="hibernate.connection.url">
            jdbc:mysql://localhost:3306/mydb
        </property>
        <property name="hibernate.connection.username">
            username
        </property>
        <property name="hibernate.connection.password">
            password
        </property>
    </session-factory>
</hibernate-configuration>

(IntelliJ可能会抱怨这个文件,告诉它找不到驱动程序,但这没问题,因为它们将由Gradle在执行过程中提供)

这个配置文件将由从Gradle调用的Ant任务使用。我将其放在一个新的db文件夹中,该文件夹是在项目根目录下创建的。

需要将以下内容添加到build.gradle文件中:

代码语言:javascript
复制
configurations {
    reverseMap
}

dependencies {
    //...your other dependencies...
    reverseMap 'org.hibernate:hibernate-core:4.0.1.Final'
    reverseMap 'org.hibernate:hibernate-tools:4.0.1.Final'
    reverseMap 'org.slf4j:slf4j-simple:1.7.5'
    reverseMap 'mysql:mysql-connector-java:5.1.48'
}

project.ext {
    hibernateDestDir = file("$projectDir/src/main/java")
}

task reverseMap {
    outputs.dir hibernateDestDir
    doLast {
        hibernateDestDir.exists() || hibernateDestDir.mkdirs()
        ant {
            taskdef(
                name: 'hibernatetool',
                classname: 'org.hibernate.tool.ant.HibernateToolTask',
                classpath: configurations.reverseMap.asPath
            )
            hibernatetool(destdir: hibernateDestDir) {
                jdbcconfiguration(
                    configurationfile: "$projectDir/db/hibernate.cfg.xml",
                    packagename: "com.me.models"
                )
                hbm2java(
                    jdk5: true,
                    ejb3: true
                )
            }
        }
    }
}

这段代码创建了一个名为reverseMap的新配置,可用于声明reverseMap任务所需的依赖项(需要hibernate-corehibernate-toolslog4j,而驱动程序应该是您的DBMS所需的驱动程序)。

reverseMap代码基本上是在the official guide之后调用Ant任务。有趣的部分是hbm2java,它是实际的导出器。其余代码基本上是Ant任务和配置的粘合代码。

Gradle任务既可以从命令行(./gradlew reverseMap)调用,也可以从IntelliJ调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66135295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档