6

Vì vậy, tôi đang cố gắng sử dụng các công cụ Hibernate để đảo ngược thiết kế cơ sở dữ liệu của tôi và tôi chỉ sử dụng các mẫu Freemarker để làm yếu mã mà nó tạo ra. Vấn đề là tôi muốn thay đổi tên của các lớp DAO nó tạo ra. Theo mặc định, các lớp DAO được đặt tên theo dạng PersonHome, tuy nhiên để đổi tên thành PersonDAO i đã sửa đổi dao/daohome.ftl.Làm thế nào để thay đổi tên của Hibernate Tools reverse engineerd DAO lớp?

Trong khi điều này đã thay đổi tên lớp được tạo thành PersonDAO, tệp java vẫn được gọi là PersonHome.java.

Có chỗ nào tôi cũng có thể thay đổi tên tệp được tạo để khớp với mã nguồn không?

Trả lời

4

Ok, tôi cũng đã tự mình làm được điều đó. Có vẻ như các công cụ ngủ đông hỗ trợ thay đổi tên tệp mà đối tượng địa lý không được hiển thị trong trình cắm thêm công cụ Hibernate cho Eclipse gây khó chịu. Thay vào đó, tôi đã phải tạo một kịch bản xây dựng kiến ​​để chạy kỹ thuật đảo ngược như sau.

<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

Tôi không xem xét kỹ điều này nhưng tôi nghĩ bạn sẽ phải sửa đổi lớp DAONewExporter (xem HBX-343 để có một số nguồn cảm hứng).

0

Tôi thêm các bit mà bị mất tích.

Sử dụng trường hợp: Sửa DAO lớp tên được tạo ra bởi các công cụ Hibernate

Giải pháp: tôi đã sử dụng mvn với kiến ​​để làm this.a cách vòng xoay nhưng nó dễ dàng hơn cho những người đã mvn thiết lập.

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

Chum cần thiết: Những lọ phải ở trong $ {basedir}/folder.Versions lib là theo mong muốn của bạn

asm-1.5.3.jar cglib-2.1_3.jar commons-collections-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-annotations-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

Sử dụng "Generic xuất khẩu <hibernatetemplate>" công cụ thay vì "DAO Code(.java)". Cùng với nó thiết lập các thuộc tính sau trong

  1. templatename[customtemplate.ftl] cho điều này chúng ta có thể sử dụng hiện daohome.ftl trong đó có sẵn trong hibernate-tools.jar.
  2. filePattern như ${package-name}\${class-name}DAO.java

và tài sản cần thiết như sessionFactoryName.

Các vấn đề liên quan