今日、Hibernate を ORM として使用してアプリケーションを作成しようとしていました。それで、作成中に疑問がありました。Hibernate マッピング ファイル (.hbm ファイル) または注釈を使用するベスト プラクティスは何ですか? それの長所と短所は何ですか?理解を助けてください。
6 に答える
- 機能的な違いはありません。両方のアプローチで(ほぼ)同じことができます
- xml ファイルは、Java にアノテーション (1.5 で追加) が追加される前に使用されていたため、時代遅れのマッピング方法と見なすことができます。
- 一般に、hibernate 固有のアノテーションよりも JPA アノテーションを使用することをお勧めします。xml を使用している場合 - JPA xml フォーマットがあり、ネイティブ フォーマットを休止状態にするために優先する必要があります。
問題はあなたの好みです - どちらの方法でも (ほとんど) 同じことができますが、違いは書き方です。
注釈を使用すると、Java メンバー変数/getter とマッピングを 1 か所に直接まとめて配置できます。
Xml マッピング ファイルを使用すると、テーブルとそのマッピングの概要がわかりやすくなります。
私の意見では、xml マッピング ファイルは、データベースとアプリケーションのより良い設計に役立ちます。アノテーションは、Java クラス -> マッピング -> データベース テーブルの方向を強制する傾向がありますが、これは間違った方向です (データベースは常に最初に設計する必要があります - 後でデータベース テーブルを変更するのは大変な作業です - ほとんどのパフォーマンス リークは、不適切なデータベース設計にあります - Java クラスはいつでも簡単に変更できます)。
そこに xml ファイルの機能上の利点が 1 つあります。たとえば、1 つの Oracle データベースと 1 つの MySQL データベースなど、構造上の違いがあるさまざまなデータベースがある場合、おそらくテーブル名とデータ型にいくつかの違いがある場合、あるデータベースから別のデータベースにアプリケーションを移植するには、いくつかの新しいマッピング ファイルを作成する必要があります。Java コードを 1 行も変更する必要はありません。これは注釈では不可能です。
私は xml マッピング ファイルを使用することを好みます。それが私の好みです。
XML アプローチを使用する適切な使用例の 1 つは、別のユーティリティによって生成されたために注釈を付けることができないオブジェクトを永続化する場合です。
それ以外は、よりクリーンな実装に役立つ傾向があり、プロパティ名のスペルミスによってバグが発生する可能性が低いため、注釈を使用します。
「TUTORIALS POINT」にはこう書いてある
「アプリケーションを他の EJB 3 準拠の ORMアプリケーションに移植できるようにする場合は、アノテーションを使用してマッピング情報を表す必要がありますが、それでも柔軟性を高めたい場合は、XML ベースのマッピングを使用する必要があります。」
私にとっては、注釈よりも XML 構成ファイルを好みます。そうすれば、最小限のコード変更で変更を加えることができるからです。
注釈は、構成よりも規約の原則に基づいています。
http://en.wikipedia.org/wiki/Convention_over_configuration
一方、xml ファイルは単なる構成です。
アノテーションの使用と構成の使用については、多くの議論があります。
私の観点からは、記述と保守が容易なため、注釈を好みます。