因此我尝试使用Hibernate Tools对我的数据库进行反向工程,而我只是开始使用Freemarker模板来弱化它生成的代码。问题是我想更改它生成的DAO类的名称。默认情况下,DAO类以PersonHome的形式命名,但要将名称更改为PersonDAO,我修改了dao / daohome.ftl。
虽然这确实将生成的类名更改为PersonDAO,但java文件仍称为PersonHome.java。
是否有地方我还可以更改生成的文件名以匹配源代码?
答案 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)
”。
与它一起在
templatename[customtemplate.ftl]
为此我们可以使用daohome.ftl
中提供的现有hibernate-tools.jar
。${package-name}\${class-name}DAO.java
以及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