如何以编程方式生成hibernate POJO类?

时间:2010-04-05 17:35:05

标签: java hibernate orm

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

显然没有这样的工具可用于纯Hibernate场景。有一个被调整为生成spring框架的代码 - 但这对我来说并不直接使用。

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

  

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

中的参数

Hibernate Tools for Eclipse and Ant可以分别通过Eclipse插件和Ant任务从Eclipse和Ant中使用,并且两者共享可以“以编程方式”重用的相同底层类(我不确定是什么你试图这样做。)

  

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

您可以从JBoss subversion repositories获取Hibernate Tools来源。更确切地说,签出以下项目:http://anonsvn.jboss.org/repos/hibernate/trunk/HibernateExt/tools/。您正在寻找的课程位于org.hibernate.tool.hbm2x.*

答案 2 :(得分:0)

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

<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。