如何更改冬眠工具的名称反向工程师DAO类?
-
01-10-2019 - |
题
因此,IM试图使用Hibernate工具来逆转我的数据库,而我只是开始使用freemarker模板来弱化其生成的代码。问题是我想更改其生成的DAO类的名称。默认情况下,dao类以形式的personhome命名,但是要将名称更改为persondao,我修改了dao/daohome.ftl。
尽管这确实将生成的类名称更改为persondao,但Java文件仍然称为personhome.java。
我还可以更改生成的文件名以匹配源代码吗?
解决方案
好吧,我本人就到了它的底部。似乎冬眠工具确实支持更改文件名,该功能并未在Hibernate工具插件中露出Eclipse,这令人沮丧。取而代之的是,我不得不创建一个蚂蚁构建脚本来运行如下的反向工程。
<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>
其他提示
使用“通用出口商” <hibernatetemplate>
“工具而不是”DAO Code(.java)
“。随着它设置以下属性
templatename[customtemplate.ftl]
为此,我们可以使用现有的daohome.ftl
在hibernate-tools.jar
.- filepattern as
${package-name}\${class-name}DAO.java
以及所需的属性 sessionFactoryName
.
我没有仔细观察这个,但我认为您必须修改 DAONewExporter
班级(请参阅 HBX-343 有一些灵感)。
我正在添加缺少的位。
用例:修改Hibernate工具生成的DAO名称类
解决方案:我将MVN与Ant一起执行此操作。一种回旋处的方式,但对于设置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.0.xsd“> 4.0.0 com.bcbsmt hibernateannnotations ampame 0.0.1.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>
需要的罐子:这些罐子应为$ {基于}/lib文件夹。
asm-1.5.3.3.jar cglib-2.1_3.jar commons-collections-20030418.083655.jar commons-logging-1.1.1.1.1.jar dom4j-1.6.6.6.6.jar freemarker-2.3.8.jar hibernate- Hibernate-Annotations-3.5.6-Final.Jar Hibernate-Tools-3.2.4.ga.jar Jtidy-r8-20060801.jar log4j-1.2.17.jar slf4j-api-1.5.8.jar .8.JAR SQLJDBC-4.0.JAR