如何更改Hibernate Tools逆向工程DAO类的名称?

时间:2010-08-28 10:37:55

标签: java hibernate reverse-engineering freemarker hibernate-tools

因此我尝试使用Hibernate Tools对我的数据库进行反向工程,而我只是开始使用Freemarker模板来弱化它生成的代码。问题是我想更改它生成的DAO类的名称。默认情况下,DAO类以PersonH​​ome的形式命名,但要将名称更改为PersonDAO,我修改了dao / daohome.ftl。

虽然这确实将生成的类名更改为PersonDAO,但java文件仍称为PersonH​​ome.java。

是否有地方我还可以更改生成的文件名以匹配源代码?

4 个答案:

答案 0 :(得分:4)

好吧,我自己已经到底了。看来,虽然hibernate工具确实支持更改文件名,但该功能未在Eclipse的Hibernate工具插件中公开,这令人沮丧。相反,我必须创建一个ant构建脚本来运行逆向工程,如下所示。

<project name="Reverse Engineer" basedir=".">

<path id="toolslib">
 <path location="lib/hibernate3.jar" />
 <path location="lib/hibernate-tools.jar" />
 <path location="lib/freemarker.jar" />
 ...
 <path location="${jdbc.driver.jar}" />
</path>


<taskdef name="hibernatetool" 
         classname="org.hibernate.tool.ant.HibernateToolTask" 
         classpathref="toolslib" />


<hibernatetool destdir="src">
   <jdbcconfiguration 
        configurationfile="src/hibernate.cfg.xml"
        packagename="my.package.name"
        revengfile="hibernate.reveng.xml">
   </jdbcconfiguration>

   <hbmtemplate destdir="src" 
        templatepath="templates"
        template="dao/daohome.ftl"
        filepattern="{package-name}/{class-name}DAO.java">
            <property key="ejb3" value="false" />
            <property key="jdk5" value="true" />
            <property key="sessionFactoryName" value="my.HibernateSessionFactory" />
        </hbmtemplate>

    </hibernatetool>

答案 1 :(得分:2)

使用“通用导出程序<hibernatetemplate>”工具代替“DAO Code(.java)”。 与它一起在

中设置以下属性
  1. templatename[customtemplate.ftl]为此我们可以使用daohome.ftl中提供的现有hibernate-tools.jar
  2. filePattern为${package-name}\${class-name}DAO.java
  3. 以及sessionFactoryName等所需的属性。

答案 2 :(得分:0)

我没有密切关注这一点,但我认为您必须修改DAONewExporter课程(请参阅HBX-343获取一些灵感)。

答案 3 :(得分:0)

我正在添加丢失的位。

用例: 修改由hibernate工具生成的DAO名称类

解决方案: 我用mvn和蚂蚁来做这件事。一种迂回的方式,但对于那些有mvn设置的人来说更容易。

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


<target name="gen_hibernate"
            description="generate hibernate classes">
    <hibernatetool destdir="${basedir}/src/main/java">
        <jdbcconfiguration 
    configurationfile="${basedir}/hibernate.cfg.xml"
    packagename="com.bcbsmt.eie.framework.dto"
    revengfile="${basedir}/hibernate.reveng.xml">
        </jdbcconfiguration>

        <hbmtemplate destdir="${basedir}/src/main/java" 
    templatepath="${basedir}/src/main/resources/template"
    template="dao/daohome.ftl"


    filepattern="{package-name}/{class-name}DAO.java">
            <property key="ejb3" value="false" />
            <property key="jdk5" value="true" />

        </hbmtemplate>

        <hbmtemplate destdir="${basedir}/src/main/java" 
                templatepath="${basedir}/src/main/resources/template"
                template="pojo/Pojo.ftl"


                filepattern="{package-name}/{class-name}.java">
                        <property key="ejb3" value="false" />
                        <property key="jdk5" value="true" />

                    </hbmtemplate>


    </hibernatetool>
</target>

maven POM:

http://maven.apache.org/xsd/maven-4.0.0.xsd“&GT;     4.0.0     com.bcbsmt     HibernateAnnnotationSample     0.0.1-SNAPSHOT                 

</dependencies>
<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>install</phase>
                    <configuration>
                        <target>
                               <ant antfile="${basedir}/build.xml">
                                <target name="gen_hibernate" />
                            </ant>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

罐子需要: 这些罐子应该在$ {basedir} / lib文件夹中。版本符合你的意愿

ASM-1.5.3.jar CGLIB的2.1_3.jar 公地的集合,20030418.083655.jar 共享记录-1.1.1.jar dom4j的-1.6.1.jar freemarker的-2.3.8.jar 冬眠-3.3.2.jar 冬眠的注解-3.5.6-Final.jar 冬眠的工具,3.2.4.GA.jar jtidy-r8-20060801.jar log4j的-1.2.17.jar SLF4J-API-1.5.8.jar SLF4J-log4j12-1.5.8.jar sqljdbc-4.0.jar