Hibernate Tools のリバース エンジニアリングされた DAO クラスの名前を変更するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3590417

質問

そこで、Hibernate ツールを使用してデータベースをリバース エンジニアリングしようとしていますが、生成されるコードを弱めるために Freemark テンプレートを使用することに取り組んでいます。問題は、生成される DAO クラスの名前を変更したいことです。デフォルトでは、DAO クラスの名前は PersonH​​ome という形式ですが、名前を PersonDAO に変更するには、dao/daohome.ftl を変更しました。

これにより、生成されたクラス名は PersonDAO に変更されましたが、Java ファイルの名前は依然として PersonH​​ome.java でした。

生成されたファイル名をソースコードに合わせて変更できる場所はありますか?

役に立ちましたか?

解決

さて、私はそれの底に自分で到達しました。Hibernate ツールはファイル名の変更をサポートしているようですが、Eclipse 用 Hibernate ツール プラグインではその機能が公開されていないため、イライラします。代わりに、次のようなリバース エンジニアリングを実行するための Ant ビルド スクリプトを作成する必要がありました。

<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)」。それとともに、次の属性を設定します。

  1. templatename[customtemplate.ftl] このために、既存のものを使用できます。 daohome.ftl で利用可能です hibernate-tools.jar.
  2. ファイルパターンとして ${package-name}\${class-name}DAO.java

そして次のような必須プロパティ sessionFactoryName.

これを詳しく見ていませんが、変更する必要があると思います DAONewExporter クラス (参照 HBX-343 インスピレーションのために)。

不足していた部分を追加しています。

使用事例:Hibernate ツールによって生成された DAO 名のクラスを変更する

解決:私はこれを行うために ant で mvn を使用しました。遠回りな方法ですが、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>

メイブン 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>

必要な瓶:これらの jar は ${basedir}/lib フォルダーにある必要があります。バージョンは希望どおりです。

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.jarjtidy-r8-20060801.jarlog4j-1.2.17.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5 .8.jar sqljdbc-4.0.jar

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top