29

特にJPAコード生成手法を探しています

まず、プロジェクトがJPA準拠のコードを生成できるのは何ですか?(例:HibernateTools)

次に、コード生成ユーティリティもカスタマイズしたいと思います。これは、企業標準に準拠している必要があるためです。

そうでない場合、リフレクションを使用してJavaコードを生成するために利用できるすべてのフレームワークは何ですか?だから私は一から書くことができます。

注:Eclipseを使用してJPAコードを生成し、それを繰り返しリファクタリングして準拠させました。

4

10 に答える 10

23

I also have difficulties understanding the question, but I'll try to rephrase:

  • You have a lot of data in a DB and want to access it via JPA
  • You don't want to manually write the classes to access the different DBs/tables
  • Currently all/most of your model classes are generated from within Eclipse
  • These models have JPA annotations
  • The model classes (or the annotations) are not according to corporate standards

When you say "JPA java code generation", I understand generating JPA annotated model classes from a supplied DB connection. Most frameworks often refer to this as reverse engineering.

Now you have two questions:

  1. What code generators can be recommended to generate JPA annotated classes?
  2. Is it possible to customize the output of these frameworks, and in which way?

To answer to the first question:

I really like the Netbeans code generation, especially if you show the results to someone not familiar with JPA.

At the level of customization I can only share the experience I had with Hibernate Tools. Especially for reproducible results, try to use the ant-based tasks. You can easily add some targets to your build and code generation can be done at two levels:

With the templates you should be able to cover most of the corporate standards. Look into the pojo directory of the hibernate-tools package. The easiest way to customize the code generation is to copy and adapt the templates and have them put before the hibernate-tools.jar in the ant task used to create the pojos.

As already pointed out in another comment, it might be difficult to modify the generated code afterwards. I hope the following tips can help you:

  • Try to separate generated and customized source files in different folders.
  • Think about using @MappedSuperclass for classes which you may want to adapt in a manual step.
于 2009-01-29T17:53:15.877 に答える
5

JPA コード生成のもう 1 つの効率的なソリューションは、「Telosys Tools」です。

カスタマイズ可能なテンプレートを使用して、既存のデータベース (「データベース ファースト」アプローチ) から動作するEclipse プラグイン。このソリューションは、軽量モデルと Velocity テンプレート (GitHub で共有) のおかげで、Dali よりも柔軟です。

Web サイトを参照してください: http://www.telosys.org/

Eclipse マーケットプレイスのプラグイン: http://marketplace.eclipse.org/content/telosys-tools

原理の簡単な説明: http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

JPA の生成には、GitHubで入手可能なJPA テンプレートを使用します: https://github.com/telosys-templates-v3

于 2013-08-20T16:00:50.860 に答える
3

私はDali Persistence Eclipse Pluginを使用しました。このツールはIndigo Java EE SR1 update siteからダウンロードできます。

プラグインをインストールした後、DB のリバース エンジニアリングを行うには、新しい JPA プロジェクトを作成し、データベース接続を設定し、JPA ランタイム (私の場合は Eclipse Link) の自動ダウンロードを開始してから、生成プロセスを開始する必要があります。

コード生成プロセス中に、テーブル マッピングと生成されたクラスの詳細を提供するよう求められます。生成の最後に、コードはクリーンです。

于 2012-02-08T16:12:45.073 に答える
2

Minuteprojectはジェネレーター ツールであり、JPA1/ JPA2と Hibernate ORM のようなアーティファクトを生成できます。これは、データベースからのリバース エンジニアリングに基づいています。DB 規則に従わない Java コードに規則を適用するようにジェネレーターに指示できますが、マッピングは正しくなります。(DB 名の接頭辞を削除する例。ADMIN_ENVIRONMENT などの ADMIN_ で始まるテーブルは、Java クラスとしての環境 (管理者なし) です) 今のところ、モデルをより少ない DB ルック アンド フィールに再形成するのに役立つ20 以上の規則があります。 Java OO フレンドリー。

もう 1 つの興味深い機能は生成されたコードとモデルの両方を変更できる更新可能なコードです。ジェネレーターがマージを行います。

テンプレートはオープンソースであり、迅速に動作します。トラックを追加して、フレームワークに固有のトラックを作成するのは「非常に」簡単です (組織に関連するセキュリティ面など)。テンプレートをフィールド レベル、エンティティ (テーブルまたはビュー)、パッケージ (エンティティのグループ)、モデル、アプリケーションにスコープして柔軟性を提供できます。トラックのテンプレートはメタデータを介してお互いを認識しているため、他のテンプレートから簡単に参照できます。テンプレートを作成し、構成によってそれらを命名規則に関連付けます。

于 2013-08-29T17:30:53.477 に答える
1

Project lombok では、基本的な名前付きクエリを生成できるようです。これは、コンパイル時に注釈とコード生成を使用する別のアプローチです。

見る:

Hibernate フォーラムの担当者は、Hibernate Tools を使用した従来のコード生成アプローチを使用しているようです :

すべての名前付きクエリを生成することはできないという点で cletus に同意しますが、オブジェクトの 1 つまたは複数のフィールドに基づいてファインダーなどの基本的な名前付きクエリを生成することは想像できると思います。

于 2010-01-14T08:58:08.960 に答える
0

JPA コードのリバース生成に最適なツール/Eclipse プラグインは Hibernate Tools です。これは、JBoss Tools の一部になりました。したがって、Eclipse で JBoss Tools をインストールすることから始めます。

次に、JPA プロジェクトを作成します。このプロジェクトは、リバース生成プロジェクトに関連するすべてのコード/構成のホルダーとして機能します。最初に JBoss Tools をインストールすると、Hibernate 設定 (Hibernate Tools の一部) が JPA プロジェクトと共に作成されるという利点があります。

次のステップは、Hibernate Tools を使用して、データベース テーブルに対応する JPA POJO エンティティを実際に逆生成することです。

JPA POJO リバース生成の手順を詳細に理解するには、次のチュートリアルを参照してください... http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa -pojo-entities-using-jboss-tools-eclipse-plugin/

上記のチュートリアルには、JPA プロジェクトを作成するためのチュートリアルへのリンクと、Eclipse インストールに JBoss Tools をインストールするためのチュートリアルへのリンクもあります。これらはどちらも、JPA POJO エンティティのリバース コード生成の前提条件です。

于 2014-02-01T15:30:16.970 に答える
0

JPA クラスの生成、データベースの視覚化と変更、既存のソース コードのリバース エンジニアリング、既存のデータベースからのモデルのインポートを行うオープン ソースのグラフィカル ツール。

NetBeans の場合: http://jpamodeler.github.io/
Eclipse の場合: https://www.eclipse.org/webtools/dali/

于 2016-06-15T05:22:38.207 に答える
-1

JOOQでご覧ください。

http://www.jooq.org/

オープンソースが利用可能です.....

于 2015-04-23T11:13:26.597 に答える
-5

わかりました、基本的にあなたは周りに間違った方法を持っています: JPA is the generation tool.

これは、JPA エンティティを生成できるのは SQL だけであり、JPA の要点はその逆であるためです。最初にオブジェクト モデルを定義し、そこからテーブルとクエリを生成できます。

たとえば、Hibernate を使用してエンティティを定義し、Hibernate エンティティ モデルからデータベースを作成する ant ビルド スクリプトを使用するプロジェクトを見てきました。

JPA エンティティー定義 (特にアノテーションを使用して行われるもの) は、それほど面倒ではありません。それらは、他の何かの産物ではなく、最初に行うべき最良の選択肢です。

その上、別のツールでは、名前付きクエリを作成したり、リレーションシップで正しいカスケード オプションを定義したりするのに役立ちません。また、コードを生成した場合、後でそれをどのように変更しますか?

それは正しい方法ではありません。

于 2009-01-17T02:08:29.010 に答える