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?

È stato utile?

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

  1. templatename[customtemplate.ftl] per questo possiamo usare la daohome.ftl esistente che è disponibile in hibernate-tools.jar.
  2. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top