Hibernate-annotations
Hibernate-アノテーション
これまで、HibernateがPOJOからデータベーステーブルへ、またはその逆にデータを変換するためにXMLマッピングファイルを使用する方法を見てきました。 Hibernateアノテーションは、XMLファイルを使用せずにマッピングを定義する最新の方法です。 XMLマッピングメタデータに加えて、またはXMLマッピングメタデータの代替として注釈を使用できます。
Hibernate Annotationsは、オブジェクトとリレーショナルテーブルのマッピングにメタデータを提供する強力な方法です。 すべてのメタデータはコードとともにPOJO javaファイルに組み込まれます。これにより、ユーザーは開発中にテーブル構造とPOJOを同時に理解できます。
アプリケーションを他のEJB 3準拠のORMアプリケーションに移植できるようにする場合は、アノテーションを使用してマッピング情報を表す必要がありますが、それでも柔軟性が必要な場合は、XMLベースのマッピングを使用する必要があります。
Hibernate Annotationの環境設定
まず、JDK 5.0を使用していることを確認する必要があります。そうでない場合は、アノテーションのネイティブサポートを利用するためにJDKをJDK 5.0にアップグレードする必要があります。
次に、sourceforgeから入手できるHibernate 3.xアノテーション配布パッケージをインストールする必要があります:(https://sourceforge.net/projects/hibernate/files/hibernate-annotations/[Hibernate Annotationのダウンロード])および hibernateをコピーします-annotations.jar、lib/hibernate-comons-annotations.jar 、およびHibernate AnnotationsディストリビューションからCLASSPATHへの lib/ejb3-persistence.jar 。
注釈付きクラスの例
Hibernate Annotationでの作業中に前述したように、すべてのメタデータはコードとともにPOJO javaファイルに組み込まれます。これにより、ユーザーは開発中にテーブル構造とPOJOを同時に理解できます。
次のEMPLOYEEテーブルを使用してオブジェクトを保存することを検討してください-
定義されたEMPLOYEEテーブルを持つオブジェクトをマップするための注釈付きのEmployeeクラスのマッピングは次のとおりです-
Hibernateは@Idアノテーションがフィールド上にあることを検出し、実行時にフィールドを介してオブジェクトのプロパティに直接アクセスする必要があると想定します。 getId()メソッドに@Idアノテーションを配置した場合、デフォルトでgetterおよびsetterメソッドを介してプロパティにアクセスできるようになります。 したがって、他のすべての注釈も、選択された戦略に従って、フィールドまたはゲッターメソッドに配置されます。
次のセクションでは、上記のクラスで使用される注釈について説明します。
@Entityアノテーション
EJB 3標準注釈は javax.persistence パッケージに含まれているため、最初のステップとしてこのパッケージをインポートします。 次に、Employeeクラスに @ Entity アノテーションを使用しました。これは、このクラスをエンティティBeanとしてマークするため、少なくとも保護されたスコープで表示される引数なしのコンストラクタが必要です。
@Tableアノテーション
@Tableアノテーションを使用すると、データベース内のエンティティを永続化するために使用されるテーブルの詳細を指定できます。
@Tableアノテーションは4つの属性を提供します。これにより、テーブルの名前、カタログ、およびスキーマをオーバーライドし、テーブルの列に一意の制約を適用できます。 今のところ、テーブル名、つまりEMPLOYEEのみを使用しています。
@Idおよび@GeneratedValueアノテーション
各エンティティBeanには主キーがあり、クラスに @ Id アノテーションを付けます。 主キーは、テーブル構造に応じて単一のフィールドまたは複数のフィールドの組み合わせにすることができます。
デフォルトでは、@ Idアノテーションは使用する最も適切な主キー生成戦略を自動的に決定しますが、 @ GeneratedValue アノテーションを適用することでこれをオーバーライドできます。ここで説明するので、デフォルトのキー生成戦略のみを使用しましょう。 使用するジェネレータータイプをHibernateに決定させると、異なるデータベース間でコードを移植できます。
@Columnアノテーション
@Columnアノテーションは、フィールドまたはプロパティがマップされる列の詳細を指定するために使用されます。 次の最も一般的に使用される属性で列注釈を使用できます-
- name 属性により、列の名前を明示的に指定できます。
- length 属性は、特に文字列値の値をマップするために使用される列のサイズを許可します。
- nullable 属性により、スキーマの生成時に列にNOT NULLのマークを付けることができます。
- unique 属性により、列に一意の値のみが含まれるようにマークできます。
アプリケーションクラスを作成する
最後に、main()メソッドを使用してアプリケーションクラスを作成し、アプリケーションを実行します。 このアプリケーションを使用して少数の従業員の記録を保存し、それらの記録にCRUD操作を適用します。
データベース構成
次に、 hibernate.cfg.xml 構成ファイルを作成して、データベース関連のパラメーターを定義します。
コンパイルと実行
上記のアプリケーションをコンパイルして実行する手順は次のとおりです。 コンパイルと実行に進む前に、PATHとCLASSPATHを適切に設定してください。
- パスからEmployee.hbm.xmlマッピングファイルを削除します。
- 上記のようにEmployee.javaソースファイルを作成し、コンパイルします。
- 上記のようにManageEmployee.javaソースファイルを作成し、コンパイルします。 *ManageEmployeeバイナリを実行してプログラムを実行します。
次の結果が得られ、EMPLOYEEテーブルにレコードが作成されます。
あなたのEMPLOYEEテーブルをチェックする場合、それは次のレコードを持つ必要があります-