【问题标题】:How to generate hibernate POJO classes programmatically?如何以编程方式生成休眠 POJO 类?
【发布时间】:2011-02-04 12:17:12
【问题描述】:

您好,我知道 Hibernate Eclipse 插件可以帮助我们(通过一系列屏幕和按钮单击)为基础表生成 POJO 和 DAO 类。但我想在运行时环境中模拟这一点,即我希望能够以编程方式执行完全相同的步骤,我应该能够提供 .cfg.xml 文件、reveng.xml 文件、数据库 URL ,目标文件夹,通过 main(String[] args) 中的命令行/参数..

显然没有这样的工具可以在纯 Hibernate 场景中工作。有一个经过调整可以为 spring 框架生成代码——但这对我现在没有直接用途。

我尝试下载 eclipse 插件的 hibernate-tools.jar 的源代码,但现在 hibernate.org(new design) 上的 src 代码下载链接由于某种原因已被禁用。

以前有没有人处理过这样的事情?或者你能给我一些线索吗?

我已经尝试过某个 JDBCReader 类的对象,基本原理是使用 JDBCReader 的方法读取所有表,然后弄清楚如何使用 hbm2POJO 生成器类....

【问题讨论】:

    标签: java hibernate orm


    【解决方案1】:

    我希望能够以编程方式执行完全相同的步骤,我应该能够通过命令行提供 .cfg.xml 文件、reveng.xml 文件、数据库 URL、目标文件夹/ main(String[] args)中的参数

    Hibernate Tools for Eclipse and Ant 可分别通过 Eclipse 插件和 Ant 任务在 Eclipse 和 Ant 中使用,并且都共享相同的基础类,您可以“以编程方式”重用这些类(我不确定您是否理解正在尝试这样做)。

    我尝试下载 eclipse 插件的 hibernate-tools.jar 的源代码,但是现在 hibernate.org(new design) 的 src 代码下载链接由于某种原因被禁用了。

    您可以从JBoss subversion repositories 获取 Hibernate 工具源。更准确地说,查看以下项目:http://anonsvn.jboss.org/repos/hibernate/trunk/HibernateExt/tools/。您要查找的课程位于org.hibernate.tool.hbm2x.*

    【讨论】:

    • @Pascal Thivent 谢谢你。坦率地说,我对这样做的想法也不是很满意。但我被指示找出如何做到这一点,因此努力:)
    【解决方案2】:

    似乎有一个ant task 可以执行此操作。您可以通过实例化org.hibernate.tool.ant.HibernateToolTask 并调用其execute() 方法以编程方式调用此ant 任务。因此,您可以在编译时或运行时执行此操作。

    但我建议不要这样做。你没有告诉使用场景,但我认为没有很多合理的场景。

    【讨论】:

    • 我同意你的观点,这没有多少合理的场景。我正在将其作为可以处理当前 Web 应用程序项目的初始设置的众多选项之一进行探索。感谢您的领导。我将对此进行探索。
    【解决方案3】:

    要自动生成 pojos,您可以在 pom.xml 文件中添加一个 maven-antrun-plugin 插件。

    <build>
        ...
        <plugins>
           <plugin>
              <artifactId>maven-antrun-plugin</artifactId>
              <executions>
                <execution>
                  <phase>generate-sources</phase>
                  <configuration>
                    <tasks>
                      <taskdef name="hibernatetool"
                               classname="org.hibernate.tool.ant.HibernateToolTask"
                               classpathref="maven.dependency.classpath"/>
    
                      <hbm2java output="src/generated">
                          <fileset dir="src/hibernate">
                              <include name="**/*.hbm.xml"/>
                          </fileset>
                      </hbm2java>
                    </tasks>
                  </configuration>
                  <goals>
                    <goal>run</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
         </plugins>
      </build>
    

    或者您可以务实地使用 Hibernate 工具任务生成 pojo 类。参考这个git project从hbm生成pojos。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 1970-01-01
      • 2019-11-15
      • 2011-07-12
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多