6

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

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

有没有一个地方我也可以改变生成的文件名来匹配源代码?

回答

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> 

0

我没有仔细看过这个,但我认为你必须修改DAONewExporter类(请参阅HBX-343获取一些灵感)。

0

我加入中缺少位。

使用案例: 修改DAO名由Hibernate工具

解决方案生成的类: 我用MVN用蚂蚁做对于那些谁MVN设立this.A迂回的方式,但它更容易。

<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“> 4.0.0 融为一体。 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目录folder.Versions是按你的愿望

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 hibernate-tools-3.2.4.GA.jar jtidy-r8-2006 0801.jar 的log4j-1.2.17.jar SLF4J-API-1.5.8.jar SLF4J-log4j12-1.5.8.jar sqljdbc-4.0.jar

2

使用 “通用出口<hibernatetemplate>” 的工具,而不是“DAO Code(.java)”。 随着它在

  1. templatename[customtemplate.ftl]为此,我们可以使用现有的daohome.ftl这是hibernate-tools.jar可设置以下属性。
  2. filePattern为${package-name}\${class-name}DAO.java

和所要求的特性等sessionFactoryName