わかりました、これは長くなります。
まず、どこから始めるかを修正しましょう。この質問では、チュートリアルが正常に機能していることを最終的に把握しました。生成された Java コードを見つけるのにいくつかの困難がありました。
補足として、このチュートリアルは、maven-hyperjaxb3-plugin
. Maven の標準的な規則では、コードを で生成しますtarget\generated-sources\myTool
。JAXB のコード生成ツールは XJC と呼ばれるため、スキーマから派生したコードの標準規約はtarget\generated-sources\xjc
. maven-jaxb2-plugin
それもします。
したがって、これからは、PO チュートリアルがうまく機能したと仮定します。コードが生成され、ラウンドトリップ テストが HSQLDB データベースで実行されたなどです。
あなたが今求めているのは、基本的に3つのことです:
- MySQL に切り替えるには?
- hbm2ddl でデータベース スキーマを生成するには?
- プロジェクトをEclipseにインポートする方法は?
これは、Hyperjaxb に固有のものではないことに注意してください。
始めましょう。
MySQL への切り替え
まず最初に、 で HSQLDB を MySQL に置き換える必要がありますpom.xml
。これを削除します:
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
<scope>test</scope>
</dependency>
そしてこれを追加します:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
<scope>test</scope>
</dependency>
次に、編集しますsrc/test/resources/persistence.properties
。これを置き換えます:
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class=org.hsqldb.jdbcDriver
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.url=jdbc:hsqldb:target/test-database/database
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
これとともに:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=...
hibernate.connection.password=...
hibernate.connection.url=jdbc:mysql://localhost/hj3
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
個人的には、現時点で MySQL データベースを手元に持っていないため、往復を実際にテストすることはできません。なのでコメントアウトします
<!--roundtripTestClassName>RoundtripTest</roundtripTestClassName-->
でpom.xml
。
手元にデータベースがある場合は、上記のpersistence.properties
ファイルで正しい URL/ユーザー名/パスワードを構成するだけです。
この時点で、MySQL を使用するように Maven プロジェクトが再構成されます。ラウンドトリップ テストがコメント アウトされておらず、データベースが利用可能な場合、ラウンドリップ テストは DB で実行する必要があります。つまり、スキーマを作成し、サンプル XML をインポートし、それを読み返し、アルファとオメガを比較します。
これで、MySQL に関するチュートリアルができたので、先に進むことができます。
データベース スキーマの生成
これは、理解するのが難しい部分でした。
データベース スキーマをファイルに生成するには、hbm2ddl
ツールを使用する必要があります。そのための Maven プラグインがあります。Hibernate 3 の場合、Codehaus プラグインが主要なプラグインのようです。最後に、次の構成を考え出しました。pom.xml
次のプラグインを( project/build/plugins
)に追加する必要があります。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>generate-schema</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<hibernatetool>
<classpath>
<path location="${project.build.directory}/classes" />
</classpath>
<jpaconfiguration persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized" propertyfile="src/test/resources/persistence.properties"/>
<hbm2ddl export="false" create="true" update="false" format="true" outputfilename="schema.ddl" />
</hibernatetool>
</configuration>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.5.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>
</plugin>
重要な点は次のとおりです。
- Hyperjaxb3 は JPA アノテーションを生成するため、 を使用する必要があります
jpaconfiguration
。
- したがって、
hibernate3-maven-plugin
コンパイル段階で実行する必要があります(注釈を読み取るクラスが必要なため、その時点でコンパイルする必要があります)。
${project.build.directory}/classes
クラスを検出して注釈を読み取れるように、コンパイルされたクラス ( ) を hibernatetool のクラスパスに含める必要があります。
- Hibernatetool に、Hibernate プロパティの場所を知らせる必要があります (
propertyfile="src/test/resources/persistence.properties"
)。
- 最後に、処理する持続性ユニットを通知する必要があります (
persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized"
)。をご覧くださいtarget/generated-sources/xjc/META-INF/persistence.xml
。
- 最後に、必要なすべての依存関係を追加します。
最後に、上で投稿した構成に到達します。この時点で、ビルドによってデータベース スキーマも生成されるはずtarget/sql/hibernate3/schema.ddl
です。これが 2 番目の質問でした。
これで Maven プロジェクトは完了です。Eclipse に切り替えましょう。
プロジェクトを Eclipse にインポートする
私が個人的に理解していないのは、
8.) hyperjaxb によって生成されたファイルを target/generated-sources/xjc にインポートします。
Hyperjaxb3 は、このディレクトリ (パッケージ内) に Java ファイルを生成するだけです。したがって、どこにも何もインポートしません。ファイルを手動でコピーしようとしないでください。
これを行う正しい方法は、Eclipse で標準の m2e プラグインを使用し、Maven プロジェクトを Eclipse ワークスペースにインポートするだけです。
pom.xml
[ファイル] > [インポート...] > [既存の Maven プロジェクト] > [ルート ディレクトリ] > (チュートリアル プロジェクトを含むディレクトリに移動) > (オンにチェックpom.xml
) > [完了]
いいえ、Eclipse でプロジェクトを作成します。Eclipse は、サポートされていないプラグイン ゴールの実行についておそらく文句を言うでしょうhibernate3-maven-plugin
。(Eclipse は、このプラグインを Eclipse のビルド サイクルに統合する方法を知りません。) [実行しない (pom に追加)] を選択します。これにより、「無視」構成が に追加され、pom.xml
Eclipse が満足するようになります。
F5 でプロジェクトを更新します。これで完了です。
Eclipse が一度にすべてを選択しなかった可能性があるため、Maven プロジェクトを更新する必要があるかもしれません (Alt+F5)。これは、現在私のワークスペースでどのように見えるかです:

エラーはありません。すべてが整っています。素敵できれい。
データベースが ( で) 正しく設定されていてpersistence.properties
、ラウンドトリップ テストを生成している場合は、それを直接実行できます ([RoundtripTest] > [Run As] > [JUnit Test])。これにより、エンティティ マネージャーが起動し、XML が読み込まれ、DB に保存され、再度読み込まれ、元のものと比較されます。
これで完了です。
上で説明した Maven プロジェクトのインポートも、Hyperjaxb3 固有のものではありません。
いいえ、「ステップバイステップ」リストに対処させてください。
1.) zip をダウンロード 2.) cmd.exe のフォルダーに移動 3.) mvn clean install を実行
Ok。
4.) Eclipse で新しい Maven プロジェクトを作成する
なぜ新しいのですか?
5.) 以下を pom.xml に追加します。
動作しません。hbm2ddl
私と同じように、の正しい構成を理解する必要がありました。これは Hyperjaxb3 固有のものではありません。
6.) Eclipse で Maven 更新プロジェクトを実行する
Ok。
7.) target/generated-sources/xjc フォルダーを作成する
いいえ。ターゲットの下にあるものはすべて生成されます。そこで手動で作成することはありません。
8.) hyperjaxb によって生成されたファイルを target/generated-sources/xjc にインポートします。
ここで何を言っているのかわかりません。ファイルを手動でコピーしようとしていましたか?
9.) テスト コードを実行するために、Eclipse プロジェクトの別の場所にメイン クラスを作成します
。
あなたのプロジェクトの幸運と成功を祈っています。