web-dev-qa-db-ja.com

JPA Javaコード生成

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

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

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

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

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

29

私も質問を理解するのに苦労しますが、言い換えましょう。

  • DBに大量のデータがあり、JPAを介してそれにアクセスしたい
  • 異なるDB /テーブルにアクセスするクラスを手動で記述したくない
  • 現在、モデルクラスのすべて/ほとんどがEclipse内から生成されています
  • これらのモデルにはJPAアノテーションがあります
  • モデルクラス(または注釈)が企業標準に従っていない

「JPA Javaコード生成」と言うと、提供されたDB接続からJPAアノテーション付きモデルクラスを生成することを理解しています。ほとんどのフレームワークでは、これをリバースエンジニアリングと呼んでいます。

ここで2つの質問があります。

  1. JPAアノテーション付きクラスを生成するために推奨できるコードジェネレーターは何ですか?
  2. これらのフレームワークの出力をカスタマイズすることは可能ですか?

最初の質問に答えるには:

特にJPAに詳しくない人に結果を表示する場合は、Netbeansコード生成が本当に好きです。

カスタマイズのレベルでは、Hibernateツールでの経験のみを共有できます。特に再現性のある結果の場合は、 antベースのタスク を使用してみてください。ビルドにいくつかのターゲットを簡単に追加でき、コード生成は2つのレベルで実行できます。

テンプレートを使用すると、企業の標準のほとんどをカバーできるはずです。 hibernate-toolsパッケージのpojoディレクトリを調べます。コード生成をカスタマイズする最も簡単な方法は、テンプレートをコピーして調整し、pojoの作成に使用されるantタスクのhibernate-tools.jarの前にそれらを配置することです。

別のコメントですでに指摘したように、生成されたコードを後で変更するのは難しい場合があります。次のヒントがお役に立てば幸いです。

  • 生成およびカスタマイズされたソースファイルを異なるフォルダーに分けてください。
  • 手動ステップで適応したいクラスに@MappedSuperclassを使用することを考えてください。
23
Kariem

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

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

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

Eclipse Marketplaceのプラグイン: 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-v

5
lgu

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

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

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

3
psuzzi

Minuteproject はジェネレーターツールであり、JPA1/ JPA2 と、ORMのような休止状態のアーティファクトを生成できます。データベースからのリバースエンジニアリングに基づいています。 Javaコードに規則を適用するようにジェネレーターに指示できますが、マッピングは正しくなります(例:DB名のプレフィックスを削除します; ADMIN_ENVIRONMENTなどのADMIN_で始まるテーブル=(=管理者なしの)環境ですJava class)現時点では 20+規則 モデルをDBのルックアンドフィールより少なくするのに役立ちますよりJava-OOフレンドリー。

別の興味深い機能は pdatable-code 生成されたコードとモデルの両方を変更できるようにする[〜#〜] and [〜#〜]次の世代の変更は保持されます!ジェネレータがマージを行います。

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

2
xflorian

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

見る:

Hibernateフォーラムのある人は、Hibernateツールで従来のコード生成アプローチを使用しているようです: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate#p2315766

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

1
snowflake

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

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

次のステップは、Hibernateツールを使用して、データベーステーブルに対応する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エンティティのリバースコード生成の前提条件です。

0
Frank

チェックアウト JPM2Java 、JPA用のコードジェネレーター。唯一の問題は、SQLファイルやテーブルからJPAコードを生成しないことです。orm.xmlファイルが必要です。テーブルから直接コードを生成するツールを探している場合は、Netbeansを試すことをお勧めします。テーブルから直接JPAコードを生成するオプションがあります

0
Rajesh

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

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

0
jGauravGupta