Hibernate Tools のリバース エンジニアリングされた DAO クラスの名前を変更するにはどうすればよいですか?
-
01-10-2019 - |
質問
そこで、Hibernate ツールを使用してデータベースをリバース エンジニアリングしようとしていますが、生成されるコードを弱めるために Freemark テンプレートを使用することに取り組んでいます。問題は、生成される DAO クラスの名前を変更したいことです。デフォルトでは、DAO クラスの名前は PersonHome という形式ですが、名前を PersonDAO に変更するには、dao/daohome.ftl を変更しました。
これにより、生成されたクラス名は PersonDAO に変更されましたが、Java ファイルの名前は依然として PersonHome.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)
」。それとともに、次の属性を設定します。
templatename[customtemplate.ftl]
このために、既存のものを使用できます。daohome.ftl
で利用可能ですhibernate-tools.jar
.- ファイルパターンとして
${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