Come cambiare il nome di Hibernate Tools inversa classe DAO ingegnere?
-
01-10-2019 - |
Domanda
Quindi, nel tentativo di usare Hibernate Tools per decodificare il mio database e io sono solo entrare in utilizzando modelli FreeMarker debole il codice che genera. Il problema è che voglio cambiare il nome delle classi DAO che genera. Per impostazione predefinita, le classi DAO sono nominati nella forma PersonHome comunque di cambiare il nome al PersonDao ho modificato il dao / daohome.ftl.
Anche se questo ha fatto cambiare il nome della classe generata al PersonDao il file java si chiamava ancora PersonHome.java.
C'è un posto che posso anche cambiare il nome del file generato in base al codice sorgente?
Soluzione
Ok bene ho avuto modo di fondo di esso me stesso. Sembra mentre gli strumenti Hibernate supporta la modifica del nome del file la funzione non è esposta negli strumenti di Hibernate Plugin per Eclipse, che è frustrante. Invece ho dovuto creare uno script di build formica per eseguire il reverse engineering come segue.
<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>
Altri suggerimenti
Usa funzione "Esportatore Generic <hibernatetemplate>
" invece di "DAO Code(.java)
".
Con essa impostare i seguenti attributi nel
-
templatename[customtemplate.ftl]
per questo possiamo usare ladaohome.ftl
esistente che è disponibile inhibernate-tools.jar
. - filePattern come
${package-name}\${class-name}DAO.java
proprietà e richieste come sessionFactoryName
.
I non guardare da vicino questo, ma penso che si dovrà modificare la classe DAONewExporter
(vedi HBX-343 di qualche ispirazione).
Io sono l'aggiunta dei bit che mancavano.
Caso d'uso: Modifica DAO nomi classe generata da strumenti di Hibernate
Soluzione: Ho usato MVN con ant fare this.A modo indiretto, ma la sua più facile per coloro che hanno mvn set up.
<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 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>
Vasi necessaria: Questi vasi dovrebbero essere in $ {} basedir / lib folder.Versions sono secondo il vostro desiderio
asm-1.5.3.jar cglib-2.1_3.jar Commons-collezioni-20030418.083655.jar commons-logging-1.1.1.jar dom4j-1.6.1.jar freemarker-2.3.8.jar hibernate-3.3.2.jar hibernate-annotazioni-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 slf4j-log4j12-1.5.8.jar sqljdbc-4.0.jar