gpt4 book ai didi

java - 使用 hibernate 对 pojos 进行逆向工程的最佳方法

转载 作者:行者123 更新时间:2023-11-29 03:32:23 26 4
gpt4 key购买 nike

从数据库对 POJO 进行逆向工程的最佳(最简单)方法是什么?我想从表中生成大约 40 个实体类,只是为了节省大量的输入。我想使用 Hibernate Tools 工具集,但所有示例似乎都不完整或相互矛盾 - 一些使用 Ant 任务的引用,一些引用 Maven 插件,以及 Jboss 站点本身表明 Hibernate Tools 4.x 现在似乎是一个 Eclipse 插件!

从头开始“正确”的方法是什么?

最佳答案

实际上,我最终使用了 Ant 任务。如果您遇到需要从数据库对 POJO 进行逆向工程的情况,并且您没有现成的基础设施,我相信 Ant 方法是最好的。我从 this excellent blog post 开始并且能够剪切和粘贴我需要的大部分代码。我通过实验发现需要一些额外的 JAR,经过一些调整后能够在相当短的时间内生成我需要的 POJO。

这假设您了解基本的 Java 术语和一点 Ant,并且两者都已安装。这是步骤。

您需要创建两个文件(build.xml 和 hibernate.cfg.xml)并下载一些 JAR。如果您在代理或防火墙后面,您可能还需要下载 Hibernate DTD 文件(因为 Hibernate 将尝试出去并读取 DTD)。就是这样。

创建以下目录:

/myantproject
/lib
/src

在您的“myantproject”目录中创建您的 build.xml 文件,如下所示:

<project name="antbuild" basedir="." default="gen_hibernate">

<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.HibernateToolTask">
<classpath>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</classpath>
</taskdef>

<target name="gen_hibernate"
description="generate hibernate classes">
<hibernatetool>

<jdbcconfiguration
configurationfile="hibernate.cfg.xml"
packagename="com.mycompany.model"
detectmanytomany="true"
/>
<hbm2hbmxml destdir="src" />
<hbm2java destdir="src" />
</hibernatetool>
</target>

</project>

同样在“myantproject”目录中创建您的 hibernate.cfg.xml 文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.ibm.as400.access.AS400JDBCDriver</property>
<property name="hibernate.connection.url">jdbc:as400://myserver;libraries=MYLIB;dateformat=iso;timeformat=iso;prompt=false;naming=system;transaction isolation=none</property>
<property name="hibernate.connection.username">myuser</property>
<property name="hibernate.connection.password">mypassword</property>
<property name="hibernate.dialect">org.hibernate.dialect.DB2400Dialect</property>
</session-factory>
</hibernate-configuration>

如果您在防火墙/代理后面,您可以下载 DTD,将文件中的 DTD 引用更改为此(确保您编辑它以指向您的实际文件位置):

"file:///mypath/myantproject/lib/hibernate-configuration-3.0.dtd"

然后您可以download the DTD from the original URL并将其粘贴到您的“lib”目录中。

这是我最终得到的 JAR。使用这些 JAR,您应该能够运行此 Ant 任务,它将对您在“hibernate.cfg.xml”中指向的数据库中的所有表进行反向工程。

cglib-nodep-2.2.3.jar
commons-collections-3.2.1.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
freemarker-2.3.8.jar
hibernate-annotations-3.5.0-Final.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-configuration-3.0.dtd
hibernate-core-3.3.1.GA.jar
hibernate-entitymanager-4.2.0.Final.jar
hibernate-tools-3.2.3.GA.jar
jt400-6.6.jar
jtidy-r938.jar
log4j-1.2.16.jar
slf4j-api-1.7.5.jar

这些来自各种来源 - 大多数来自 apache.org 或 hibernate.org。您将需要数据库供应商提供的数据库 JDBC JAR(在本例中为 IBM 的 AS400 连接器 jar)来连接到数据库。我还需要下载这些 DTD,因为我在防火墙后面:

hibernate-mapping-3.0.dtd
hibernate-reverse-engineering-3.0.dtd

祝你好运!

关于java - 使用 hibernate 对 pojos 进行逆向工程的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com