6

Tak więc próbuję użyć narzędzi Hibernate do inżynierii wstecznej mojej bazy danych i dopiero zaczynam korzystać z szablonów Freemarker, aby osłabić kod, który generuje. Problem polega na tym, że chcę zmienić nazwę generowanych przez DAO klas. Domyślnie klasy DAO są nazywane w formie PersonHome, jednak aby zmienić nazwę na PersonDAO, zmodyfikowałem dao/daohome.ftl.Jak zmienić nazwę narzędzia Hibernate Tools reverse engineerd DAO?

Podczas gdy zmieniono nazwę wygenerowanej klasy na PersonDAO, plik java wciąż nosi nazwę PersonHome.java.

Czy istnieje miejsce, w którym można również zmienić wygenerowaną nazwę pliku, aby pasowała do kodu źródłowego?

Odpowiedz

4

Dobrze, sam doszłam do sedna. Wydaje się, że podczas gdy narzędzia hibernacji obsługują zmianę nazwy pliku, funkcja ta nie jest dostępna w pluginach do narzędzi Hibernuj dla Eclipse, co jest frustrujące. Zamiast tego musiałem stworzyć skrypt budujący mrówki, aby uruchomić inżynierię odwrotną w następujący sposób.

<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

Nie przyjrzałem się temu, ale myślę, że będziesz musiał zmodyfikować klasę DAONewExporter (patrz: HBX-343).

0

dodaję bity że brakowało.

przypadków użycia: Zmienić DAO nazwy klasy generowane przez narzędzia stan hibernacji

rozwiązanie: użyłem mvn z mrówki zrobić this.A okrężną drogą, ale jego łatwiejsze dla tych, którzy mvn skonfigurować.

<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> 

Słoiki potrzebne: Te słoiki powinny być w $ {basedir}/lib folder.Versions są zgodnie z Państwa życzeniem

ASM-1.5.3.jar cglib-2.1_3.jar commons-kolekcje-20030418.083655.jar commons-logging-1.1.1.jar dom4j-1.6.1.jar freemarker-2.3.8.jar hibernacji-3.3.2.jar hibernate-adnotacje-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

Use "Generic Eksporter <hibernatetemplate>" narzędzie zamiast "DAO Code(.java)". Wraz z nim ustawić następujące atrybuty w

  1. templatename[customtemplate.ftl] za to możemy wykorzystać istniejący daohome.ftl, który jest dostępny w hibernate-tools.jar.
  2. filePattern jak ${package-name}\${class-name}DAO.java

oraz wymagane właściwości, takie jak sessionFactoryName.